Bonjour,
Dans mon managed bean je voudrais accéder aux methodes d'un autre managed bean mis en session.
Comment faire pour récupérer ce managed bean mis en session?
Version imprimable
Bonjour,
Dans mon managed bean je voudrais accéder aux methodes d'un autre managed bean mis en session.
Comment faire pour récupérer ce managed bean mis en session?
Ou tout en une ligne si tu prefere.Code:
1
2
3 TypeDeTonObjet tonObjet = (TypeDeTonObjet)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("nomDuBeanDeclaréDansFacesConfig"); tonObjet.taMethode();
J'ai essayé mais ca me retourne null, j'aurais voulu savoir a quel moment le managed bean est passé en session, au premier appel d'une page JSP qui fait appelle au managed bean en question?
Je pense que'un bean jsf n'est créé que lorsqu'on a besoin de lui, pour recuperer une valeur ou executer une methode.
Tu peux toujours le verifier en ajoutant un System.out.println("") dans le constructeur de ton bean jsf.
Je pense comme TheJoe et si cela retourne null, c'est que le bean n'a pas encore été mis en session.
Tu peux nous en dire plus sur ton contexte, quelle page appelle quelle page et a quel moment, voir nous donner ton code.
Effectivement, en naviguant dans l'application j'ai testé l'appel a ce bean apres etre passé dans une page jsp qui utilise ce bean, et je n'ai plus ce probleme de Null.
J'en déduis donc que le bean se créé lorsqu'une page jsp l'utilise.
S'il est null je le créé directement, et ça a résolu mon probleme
Merci!
Juste pour signaler que la réponse à ta question se trouvait dans la :faq: http://java.developpez.com/faq/jsf/?...e_session_bean
Sinon, une méthode plus propre aurait été d'injecter le managed bean que tu veux récupérer dans le bean qui va l'utiliser (même pas besoin de Spring pour ça)
Toujours, dans la :faq: http://java.developpez.com/faq/jsf/?page=basic#BASIC_di