Obter um managed bean, a partir de outro

5 respostas
L

Bom dia pessoal, como faço para obter a referencia de um managed bean atraves de outro managed bean!? todos eles tem scope como session

valeu!

5 Respostas

M

Bem você pode usar pegar via sessão mesmo.

:okok:

L

Ai que tah :oops: hehehe estou tentando achar algo assim:

FacesContext context = FacesContext.getCurrentInstance();
Object session = context.getExternalContext().getSession(false);

mas segundo
http://java.sun.com/javaee/javaserverfaces/1.0/docs/api/javax/faces/context/ExternalContext.html#getSession(boolean)

ele me retorna um Object, ai de onde consigo a referencia do outro bean a partir disso?!?

valeu!

L

Ah, só para eu dizer o que eu quero fazer. Tenho 2 beans, um cadastro de X outro de Y, o X eh chave extranegira de Y, então coloquei um list de X no cadastro de Y. Mas essa list eu carrego num array de SelectItem, só que quando cadastro um X, e entro de novo no cadastro de Y, aquele X não atualiza, pois esta no construtor, ai eu não queira atualizar toda vez que a pagina fosse submetida, apenas quando for cadastrado ou excluido um X, por isso pensei no cadastro de X setar uma variavel no cadastro de Y dizendo que tem que atualizar… não sei se essa é a melhor forma… mas, eu ainda não conheço muito.

valeu!

L

Esquece, concegui

FacesContext context = FacesContext.getCurrentInstance();
      javax.servlet.http.HttpSession session = (HttpSession) context.getExternalContext().getSession(false); 
      Object obj = session.getAttribute("bean");

é que na api diz que retornava um Object, ai demorei para achar que retornava HttpSession… dai deu certo… só que, isso é normal? acho meio gambiarra, mas não sei se tem outra forma de fazer, deve ter uma melhor, mas eu não sei.

M

Opa,

Bem na verdade eu faço de uma forma diferente, crio um atributo e seto ele via valueBinding no faces-config:

<managed-property> <property-name>myBean</property-name> <value>#{sessionScope.mybean}</value> </managed-property>

:okok:

Criado 12 de junho de 2006
Ultima resposta 13 de jun. de 2006
Respostas 5
Participantes 2