Déterminer l'ID du formulaire de conteneur JSF
Question
Je dois déterminer l'ID d'un champ de formulaire à partir d'un gestionnaire d'actions. Le champ fait partie d’un composant facelets inclus et sa forme peut donc varier.
included.xhtml
<ui:component>
<h:inputText id="contained_field"/>
<h:commandButton actionListener="#{backingBean.update}" value="Submit"/>
</ui:component>
example_containing.xhtml
<h:form id="containing_form">
<ui:include src="/included.xhtml"/>
</h:form>
Comment puis-je déterminer l'ID du formulaire dans la méthode update
au moment de l'exécution? Ou mieux encore, l'identifiant du champ de saisie directement.
La solution
Liez le bouton à votre bean de base, puis utilisez getParent () jusqu'à ce que vous trouviez la forme la plus proche.
Autres conseils
J'utiliserais la méthode de jsight par programme. Vous pouvez connaître l'identifiant de vos éléments (à moins que vous ne laissiez JSF les créer, je ne connais pas le moyen de numéroter les identifiants) en le regardant. h: form est un conteneur de nommage. Aussi longtemps que vous ne l'avez pas enveloppé dans un autre conteneur de nommage, il le contiendraForm: ContentField , (parentNamingContainerId:) * composantId
La méthode de mise à jour étant de type actionListener, vous pouvez accéder à votre composant d'interface utilisateur comme suit
public void update(javax.faces.event.ActionEvent ac) {
javax.faces.component.UIComponent myCommand = ac.getComponent( );
String id = myCommand.getId(); // get the id of the firing component
..... your code .........
}