Mehrere abhängige / cascading selectOneMenu dropdown-Listen in JSF
Ich versuche zu machen 4 abhängige Menüs.
Wenn der Benutzer wählt ein Element aus dem ersten Menü, das zweite Menü angezeigt abhängigen Daten und wenn der user wählt Artikel aus die zweite , die Dritte Karte abhängig von Daten und so weiter.
Sieht der Benutzer die Elemente auf der ersten Menü-nur und die anderen leer. Wenn er wählt ein Element auf der ersten Menü-die zweite wird zeigen Daten, sondern der Dritte und vierte bleiben leer, und so weiter. Der Benutzer muss schließlich wählen Sie die Einträge aus allen 4 Menüs.
<h:selectOneMenu id="first" value="#{nodes.selectState"}>
<f:selectItems value="#{nodes.stateList}"/>
<f:ajax render="second">
</h:selectOneMenu>
<h:selectOneMenu id="second" value="#{nodes.selectCity"}>
<f:selectItems value="#{nodes.cityList}"/>
<f:ajax render="third">
</h:selectOneMenu>
<h:selectOneMenu id="third" value="#{nodes.selectRegion"}>
<f:selectItems value="#{nodes.regionList}"/>
<f:ajax render="fourth">
</h:selectOneMenu>
<h:selectOneMenu id="fourth" value="#{nodes.selectStation"}>
<f:selectItems value="#{nodes.stationList}"/>
</h:selectOneMenu>
Knoten Java-Klasse
private String selectState; //+setters, getters
private String selectCity; //+setters, getters
private String selectRegion; //+setters, getters
private String selectStation; //+setters, getters
private List<SelectItem> stateList; //+setters, getters
private List<SelectItem> cityList; //+setters, getters
private List<SelectItem> regionList; //+setters, getters
private List<SelectItem> stationList; //+setters, getters
public getStateList(){
stateList= new ArrayList<SelectItem>();
stateList.add(new SelectItem("A"));
}
public getCityList(){
CityList= new ArrayList<SelectItem>();
if(selectState.equals("A")){
CityList.add(new SelectItem("B"));
}
}
public getRegionList(){
RegionList= new ArrayList<SelectItem>();
if(selectCity.equals("B")){
RegionList.add(new SelectItem("C"));
}
}
public getStationList(){
StationList= new ArrayList<SelectItem>();
if(selectRegion.equals("C")){
StationList.add(new SelectItem("D"));
}
}
es ist nur auf die ersten 2 Menüs 2 Menüs erhalten null-Werte
InformationsquelleAutor Shadooo Medo | 2013-05-04
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Setzen die bean im view-scope und loszuwerden, alle business-Logik in getter-Methoden.
Die bean muss in der Ansicht platziert Rahmen, so dass alle vorherigen Auswahl und neue Artikel erinnert werden, sonst geht fehl, wenn z.B.
rendered
Attribut hängt von einem Zustand das war nur eine Anfrage, oder wenn JSF muss, überprüfen Sie das ausgewählte Element gegen die Liste der verfügbaren Elemente.Den getter-Methoden, sollten Sie nicht enthalten keine business Logik, da Sie auch aufgerufen werden, während ein.o. validations-phase. Sollten Sie verwenden
<f:ajax listener>
durchführen, business-Logik basiert auf einer änderung. Sie sollten in der listener-Methode auch ausdrücklich klar aus ausgewählten Werten von Kind dropdowns. Sie können<f:ajax render>
zum aktualisieren des Inhalts des Kindes dropdowns.So, so:
mit
Siehe auch:
InformationsquelleAutor BalusC
Gibt es einen typo-Fehler in Ihrem code. Für das Dritte Menü, die Sie gegeben haben, die id-Namen wie "erste" statt "Dritte". Kann sein, weil dieses problem.
InformationsquelleAutor Archana
Versuchen Sie dieses, es kann Ihnen helfen,
Durch die Nutzung des --Wählen Sie Stadt-- , --Region Auswählen--,--, Wählen Sie " Station-- zu vermeiden, die null-Zeiger-Ausnahme.
Danke
das problem ist nicht in der java-Datei. das problem ist in der ajax-rendering, das erste Menü ist das rendering der zweiten aber der zweite ist nicht in der Lage zum Rendern der 3. also der selectCity Wert nicht erreichen, die java-code
InformationsquelleAutor newuser
Sind Sie vor diesem Problem, denn Sie haben zweimal
id="first"
.Dieses Problem beheben und es sollte funktionieren.
InformationsquelleAutor msgoon6