... Bonjour,
Tout est dans le titre, y a t'il un moyen de récupérer la propriété d'un managedBean à partir d'un autre managedBean?
Version imprimable
... Bonjour,
Tout est dans le titre, y a t'il un moyen de récupérer la propriété d'un managedBean à partir d'un autre managedBean?
C'est tout à fait possible.
Le sujet ayant été abordé de nombreuses fois, je te suggère une petite recherche sur ce forum...
Bonjour,
pour récupérer un bean à partir d'un autre bean on pourrai suivre l'exemple suivant:
nous avons bean1 et bean2, on suppose que bean2 est dans la session et on veut faire appel à l'une de ses méthode qui est getPropriete(), et celà dans la classe de définition de bean1 bien sûr
le bean2 il faut le laisser tranquillement dans la session.
dans la classe de définition bean1 je propose de faire un include de:
et puis il faut récupérer le contexte courant de l'applicationCode:
1
2import javax.faces.context.FacesContext;
en suite on récupére le bean2 et on suppose que sa classe est Bean2.Code:
1
2 FaceContext fc=FaceContext.getCurrentInstance();
maintenant nous avons l'objet bean2 et on peut invoquer sa méthode.Code:
1
2 Bean2 bean2=(Bean2) fc.getApplication.createValueBinding("#{bean2}").getValue(fc);
Code:
1
2 bean2.getPropriete();
Il y'a plusieurs façon pour faire cela.
Voici un bon site qui détaille ces méthodes:
http://balusc.blogspot.com/2006/06/c...enManagedBeans
Voila une méthode toute faite :Tu lui passes ton contexte JSF,l'id du manageBean declaré dans ton facesContext,et la classe du ManagedBean que tu veux récupérer.Code:
1
2
3
4
5
6 public static Object recupManagedBeanById(FacesContext context, String id, Class classeBean) { Object bean = context.getApplication().getExpressionFactory().createValueExpression(context.getELContext(), "#{" + id + "}", classeBean).getValue(context.getELContext()); return bean; }
merci pour vos réponses je vais regarder tout ca
vous n'auriez pas un lien avec des @ManagedProperty (jSF 2.0)?
Il suffit de déclarer le bean en paramètre d'un autre bean et ajouter l'annotation avec JSF 2.0, sinon avec JSF 1 ty peux le faire aussi, c'est mieux que de d'appeler le bean avec les valueExpression, tu profitera de l'injection de dépendance de JSF.
un exemple est donné dans la :faq: