Ermitteln der ID des JSF-Containerformulars


3

Ich muss die ID eines Formularfelds innerhalb eines Aktionshandlers ermitteln. Das Feld ist Teil einer enthaltenen Facelets-Komponente und daher wird die Form variieren.

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.

5

Binden Sie die Schaltfläche an Ihre Backing Bean und verwenden Sie getParent(), bis Sie das nächste Formular gefunden haben.

  0

folgt das ist, was ich hatte Angst. Ich habe auf etwas Saubereres gehofft. 23 sep. 082008-09-23 19:39:55


0

Programmatisch würde ich jsight-Methode verwenden. Sie können die ID Ihrer Elemente kennen (es sei denn, Sie lassen JSF sie erstellen, ich kenne die Mittel zur Nummerierung in den IDs nicht), indem Sie sie betrachten. h: form ist ein Benennungscontainer. Solange Sie ihn nicht in einen anderen Benennungscontainer eingepackt haben, wird containingfield sein. containedfield Das ':' ist das Namenstrennzeichen ist standardmäßig JSF und die ids werden in etwa so erstellt (parentNamingContainerId:) *


0

ComponentID da Update-Methode des Typs Action ist, können Sie Ihre UI-Komponente zugreifen, als

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

}