2013-09-04 5 views
5

Meine Anforderung ist wie folgt. Ich habe ein SelectMenu mit einigen Werten (Beispiele: Technik, Medizin, Recht usw.). Angenommen, ich wähle Engineering in der Dropdown-Liste aus, möchte ich ein weiteres Dropdown-Menü erstellen, das dynamisch mit Werten erstellt wurde, die sich auf Engineering beziehen (Beispiel: Elektronik, Computer, Elektrik usw.). Wie erreiche ich das in JSF 2.0?Hinzufügen von dynamischen Dropdown-Komponenten in JSF

+0

prüfen Sie unsere '[selectonemenu]' Wiki-Seite, um weitere Hinweise, wie die meisten dieser Komponenten zu erhalten: http: // stackoverflow.com/tags/selectonemenu/info (Sie können darauf zugreifen, indem Sie den Tag "[selectonemenu]", den ich unter Ihre Frage platziert habe, bewegen, bis eine schwarze Box erscheint und dann auf den Link * info * klickt). – BalusC

Antwort

6

Sie müssen eine Ajax-Anfrage durchführen, wenn sich die Auswahl von h:selectOneMenu ändert. Diese Anforderung aktualisiert die auswählbaren Elemente in der zweiten h:selectOneMenu. Nach der Ajax-Anforderung müssen Sie die zweite h:selectOneMenu erneut mit den aktualisierten Werten rendern.

Seite:

<h:selectOneMenu value="#{bean.selectedSubject}"> 
    <f:ajax listener="#{bean.changeSubject}" render="speciality_selection" /> 
    <f:selectItems value="#{bean.subject}" /> 
</h:selectOneMenu> 

<h:selectOneMenu id="speciality_selection" value="#{bean.selectedSpeciality}"> 
    <f:selectItems value="#{bean.subjectSpecialities}" /> 
</h:selectOneMenu> 

Managed Bean:

public void changeSubject(){ 
    //Loads the specialities depending on the selected subject 
    subjectSpecialities = loadSpecialitiesForSubject(selectedSubject); 
}