[RESOLVIDO] comunicação entre backbeans

8 respostas
alcemir

Opa,

Pessoal estou querendo saber como faço para buscar a informação de outro backbean.

Tipo, um backbean cliente, outro relatorioCliente. Sendo que esse backbean relatorioCliente precisa de um atributo já populado do cliente que está em sessão.

Estava tentando assim:

FacesContext context = FacesContext.getCurrentInstance();

HttpSession session = (HttpSession) context.getExternalContext().getSession(true);

Cliente cliente = (Cliente) session.getAttribute(cliente);

Mas percebir que assim não estou buscando do outro backbean mas da sessão e quando debugo esse código, quando chega nessas linhas os atributos de cliente já não estão vazios.

Será que fui claro…

Abraço a todos

8 Respostas

rissato

vc pode fazer injecao de um bean dentro de outro através do faces-config.xml

dá uma olhada na tag

aeugenio

Quais sao os escopos dos beans relatorioCliente e Cliente ? Sao ambos de sessao ?
Eu faco assim e funciona:

FacesContext context = FacesContext.getCurrentInstance();
Cliente cliente = (Cliente) context.getExternalContext().getSessionMap().get("aquiVaiNomeDoBeanDefinidoNoFacesConfig");

/peace

alcemir

aeugenio, está dando erro…

vamos lá, para você entender… no meu relatório eu quero adicionar o nome do usuario logado no momento ao relatório, porém ao trocar de página eu perco essa informação… eu gostaria de saber como faço para buscar ela novamente…

FacesContext context = FacesContext.getCurrentInstance();
Usuario usuario = (Usuario) context.getExternalContext().getSessionMap().get(“backBeanLogin”);

mas aí dá erro…

o que ser?

aeugenio

Qual o erro ?

Veja no seu faces-config.xml e veja se o seu bean backBeanLogin foi definido como sessao. Se for sessao nao ter pq vc nao estar conseguindo pegar esse valor.

Se for request ai tem que ver o tipo de navegacao que vc usou pq vc deve estar perdendo esse valor. Alem de que se for request o comando tem que ser:

Usuario usuario = (Usuario) context.getExternalContext().getRequestMap().get("backBeanLogin");

/peace

alcemir

É sessao sim…

thimor

faz assim

FacesContext fc = FacesContext.getCurrentInstance();
HttpSession session = fc.getExternalContext().getSession(false);
Usuario user = (Usuario) session.getAttribute("user");

de posse do objeto session fica mais facil recuperar os parametros.

thimor

Entendi o que voce precisa… da para fazer assim:

private Usuario recuperaUsuario() {
        FacesContext context = FacesContext.getCurrentInstance();
        UsuarioController uc = (UsuarioController) context.getApplication().getELResolver().getValue(context.getELContext(), null, "usuario");
        return uc.getUsuario();
    }

onde “usuario” que esta no getValue(context.getELContext(), null, “usuario”); é o nome registrado para o bean no faces-config.xml

alcemir

ae pessoal, agradeço à ajuda de todos… peguei um pouquinho de cada um e conseguir resolver… hehe

fica assim:

//Busca o usuario logado
    FacesContext context = FacesContext.getCurrentInstance();
    backBean bean = (backBean) context.getExternalContext().getSessionMap().get("nome do backbean no faces-config");
    String loginUsuario = bean.getLogin();

Funcionou perfeito…

Agradeço mais uma vez…

Abraço à todos!

Criado 6 de novembro de 2008
Ultima resposta 7 de nov. de 2008
Respostas 8
Participantes 4