Acessar beans na sessao

5 respostas
fabioebner

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

5 Respostas

rdantas

faz assim ó:

FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(“objetoDesejado”);

Espero ter ajudado,

rodrigo.

C

é 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

fabioebner

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?

fabioebner

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

fabioebner

estou recebendo esse erro na hora de dar o contex.getApplication();

alguem???

Criado 28 de fevereiro de 2008
Ultima resposta 28 de fev. de 2008
Respostas 5
Participantes 3