Comunicação entre Managed Beans MB - [RESOLVIDO]

Estou tendo problemas p/ fazer a comunicação entre Managed Beans.

1º situação: tenho o MB Login, qdo faço o login seto o codigo do usuario. Preciso recuperar o codigo do usuario logado em outros MB.

2º situração: tenho um servlet p/ gerar relatorio jasper reporte, preciso enviar o parametro de um componente jsf p/ ele. Criei um MB onde seto o paramentro do componente jsf ai preciso recuperar esse parametro no servlet.

Se puder me ajudar agradeço,

qual o escopo dos seus managed beans?
se estiver na sessão não tem problema
você pode recuperar o mnaged bean da sessão
ou jogar o usuário logado na sessão apenas

normalmente quando o managed bean tem o escopo na sessão, o objeto dele está na sessão com o nome igual ao nome que você deixou ele configurado no faces config, o mesmo nome que você chama ele na sua página web por exemplo.

meu MB esta assim:

loginBack
backingbean.LoginBacking
session

mas não consigo chamar loginBack na classe do MB, na pagina jsf consigo!

consegue sim
olhe o código abaixo:

String ref = "nomeDoSeuManagedBean";
FacesContext facesContext = FacesUtil.getFacesContext();
ELContext elContext = facesContext.getELContext();
ExpressionFactory factory = facesContext.getApplication().getExpressionFactory();
MeuManagedBean meuBean = (MeuManagedBean) factory.createValueExpression(elContext, "#{" + ref + "}", Object.class).getValue(elContext);

Este código recupera o seu mbean da sessão e faz o cast para o objeto que você deseja

desse jeito não vai mesmo
te passei um código no post anterior
é so você substituir ali a variável ref pelo o nome do seu mbean
que vai te retornar uma instância do seu mbean que está na sessão

adicoone o seguinte método na sua classe:

public static Object getBean(String ref) {
    FacesContext facesContext = FacesUtil.getFacesContext();

    ELContext elContext = facesContext.getELContext();
    ExpressionFactory factory = facesContext.getApplication().getExpressionFactory();
    return factory.createValueExpression(elContext, "#{" + ref + "}",Object.class).getValue(elContext);
}

e dai onde você desejar recuperar o seu mbean de login faça

int cod = ((LoginBacking) getBean("loginBack")).getCodigo;

entendi, mas a classe FacesUtil? é de alguma biblioteca?

não
FacesUtil é uma classe minha
esqueci de substituir

use o fonte abaixo:

public static Object getBean(String ref) {  
    FacesContext facesContext = FacesContext.getCurrentInstance(); 
  
    ELContext elContext = facesContext.getELContext();  
    ExpressionFactory factory = facesContext.getApplication().getExpressionFactory();  
    return factory.createValueExpression(elContext, "#{" + ref + "}",Object.class).getValue(elContext);  
}

Deu certo, muito obrigado.

de nada

quando sua dúvida é resolvida se lembre de colocar a tag [RESOLVIDO]
no título do post

abraço