E possivel eu atravez de um bean com scope request ou uma classe qualquer acessar um propriedade ou metodo de um bean q esteja na minha sessao??
obrigado
Acessar beans na sessao
5 Respostas
faz assim ó:
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(“objetoDesejado”);
Espero ter ajudado,
rodrigo.
é sim…vamos supor que vc queira uma propriedade do tipo String…
Fazer uma varável receber o valor da propriedade do bean
FacesContext context = FacesContext.getCurrentInstance();
javax.faces.el.ValueBinding binding =
context.getApplication().createValueBinding("#{pessoaBean.nome}");
String nome = (String)binding.getValue(context);
Fazer uma propriedade do bean receber o valro de uma variavel
ArrayList newNames;
FacesContext context = FacesContext.getCurrentInstance();
context.getApplication().createValueBinding("#{tableData.usuarios}").setValue(context,
newNames);
para quem usa datatable e precisa de escopo session, o negocio acima é uma mao da roda
pessoas nao consegui.. tenho o seguinte:
PerfilBean.java/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.dnasolution.bean;
import br.com.dnasolution.db.Conexao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
/**
*
* @author Administrador
*/
public class PerfilBean {
private ArrayList<String> paginas = new ArrayList<String>();
public ArrayList<String> getPaginas() {
return paginas;
}
public void setPaginas(ArrayList<String> paginas) {
this.paginas = paginas;
}
/** Creates a new instance of PerfilBean */
public PerfilBean() {
}
public String perfilUsuario(){
Connection con;
ResultSet rs;
Statement st;
try{
con = Conexao.getInstancia().conectarDb();
st = con.createStatement();
rs = st.executeQuery("SELECT * FROM tb_paginas_site");
while(rs.next()){
paginas.add(rs.getString("nm_pagina_site"));
}
}catch(Exception e){
System.out.println(e.getMessage());
}
return "FOISE";
}
}
e um filter que eh o seguinte:
Filter.java/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.dnasolution.filtro;
import br.com.dnasolution.bean.PerfilBean;
import java.io.IOException;
import java.util.ArrayList;
import javax.faces.context.FacesContext;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
/**
*
* @author Administrador
*/
public class Filtro implements Filter {
private ServletContext context = null;
public void init(FilterConfig config) throws ServletException {
this.context = config.getServletContext();
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//System.out.println(request.toString());
try{
HttpServletRequest reqH = (HttpServletRequest) request;
String url = reqH.getRequestURI();
if (!(url.equals("/Campanha/principal/principal.jsf"))) {
FacesContext context = FacesContext.getCurrentInstance();
javax.faces.el.ValueBinding binding = context.getApplication().createValueBinding("#{PerfilBean.paginas}");
ArrayList nome = (ArrayList)binding.getValue(context);
PerfilBean p = (PerfilBean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("PerfilBean");
System.out.println(p.toString());
System.out.println(reqH.getRequestURI());
}
}catch(Exception e ){
System.out.println(e.getMessage());
}
//System.out.println(response.toString());
chain.doFilter(request, response);
}
public void destroy() {
context = null;
}
}
tentei das duas formas, mas nenhuma deu certo.. nao consegui recuperar o valor do ArrayList
obs meu PerfilBean esta como SESSION e o Filtro nem entra na parte do faces-config
alguma ajuda?
duvida… pode ser pq eu estou usando um filter??? e nesse caso ele consegue recuperar o esquema da sessao??
obs eu so executo o filter depois ate de executar um metodo q esta nesse bean da sessao um um submit
estou recebendo esse erro na hora de dar o contex.getApplication();
alguem???