Obtenir par programme UIComponents d'une vue JSF dans le constructeur du bean
Imaginer une page JSF avec plusieurs composants, tels que <h:selectOneMenu>
<h:dataTable>
<h:panelGrid>
etc. Chaque composant a un ID. Existe t'il une méthode ou une technique par laquelle je peux obtenir les composants par programme lorsque le constructeur de la fève est invoquée?
source d'informationauteur Basit
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir le composant de l'arbre par
FacesContext#getViewRoot()
et de trouver un composant particulier par l'ID duUIComponentBase#findComponent()
:Cependant, le point de vue de la racine n'est pas directement disponible dans le bean constructeur de soi. Il pourrait revenir
null
sur des demandes pour de vue dans lequel le haricot n'est pas référencé en vue moment de la construction de la balise ou attribut. Il est toutefois garanti d'être disponible lors de l'avant le rendu de la vue de l'événement.avec
Sans rapport avec au problème concret, il n'est pas clair pourquoi vous avez besoin de le faire, mais je peux dire que c'est le plus souvent une odeur de code. Je suggère de vérifier si c'est vraiment la bonne solution pour le béton à l'exigence fonctionnelle que vous avez eu dans l'esprit. Pour trouver des indices et des conseils, voir aussi Comment la 'liaison' attribut de travail dans le JSF? Quand et comment doit-il être utilisé? et Comment utiliser un composant de liaison dans JSF droit ? (demande d'étendue de la composante de la session à l'étendue bean).
J'ai essayé ta solution et ça a fonctionné :). Ici je viens de poster ma réponse que la façon dont je l'ai fait. En fait quelqu'un m'a posé cette question que nous pouvons obtenir tous les composants à l'intérieur d'un constructeur lors de notre page d'invoquer, c'est à dire, pourquoi j'ai demandé sur ce forum:). Voici mon code
Je veux demander que j'ai reçu de formulaire(HtmlForm) ici, mais panel1 et myTable null, pourquoi? Bien que je reçois du panneau et de la table par l'inspection HtmlForm enfants, mais pourquoi je ne peux pas les obtenir directement.
Grâce
voir ce http://horrikhalid.com/2011/01/27/how-to-find-uicomponent-in-jsf/
Si le panneau et la table sont en forme, essayez les solutions suivantes: