Frage

Ich brauche die ID ein Formularfeld innerhalb eines Action-Handler zu bestimmen. Das Feld ist ein Teil einer inbegriffen facelets Komponente und so wird die Form variiert.

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>

Wie kann ich die ID der Form, in der update Methode zur Laufzeit bestimmen? Oder noch besser, die ID des Eingabefeldes direkt.

War es hilfreich?

Lösung

Binden Sie die Schaltfläche, um Ihren Backing Bean, dann verwenden getParent (), bis Sie die nächste Form finden.

Andere Tipps

Programmatically würde ich jsight Methode verwenden. Sie können die ID Ihrer Elemente kennen (es sei denn, Sie JSF sie erstellen lassen, ich weiß nicht, die Mittel in den IDs für die Nummerierung) durch es zu betrachten. h: Form ist ein Namenscontainer so lange, wie Sie nicht haben es in einem anderen Namenscontainer wickelte es containingForm sein wird: containedfield Die ‚:‘ ist die Namensgebung Separator ist standardmäßig JSF und die IDs werden so erstellt, etwa sowieso (parentNamingContainerId:) * componentId

Da Update-Methode des Typs Action ist, können Sie Ihre UI-Komponente wie folgt zugreifen

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

}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top