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.

Était-ce utile?

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 .........

}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top