Erstellen Sie mehrere abhängige / kaskadierende selectOneMenu-Dropdown-Listen in JSF

Ich versuche 4 abhängige Menüs zu machen.

Wenn der Benutzer ein Element aus dem ersten Menü auswählt, werden im zweiten Menü abhängige Daten angezeigt, und wenn der Benutzer ein Element aus dem zweiten Menü auswählt, werden im dritten Menü abhängige Daten usw. angezeigt.

Der Benutzer sieht nur Elemente im ersten Menü und die anderen sind leer. Wenn er im ersten Menü eine Option auswählt, werden im zweiten Menü Daten angezeigt, im dritten und vierten Menü bleiben jedoch keine Daten usw. Der Benutzer muss schließlich Einträge aus allen 4 Menüs auswählen.

<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 funktioniert nur in den ersten beiden Menüs. Die anderen beiden Menüs erhalten Nullwerte

Antworten auf die Frage(4)

Ihre Antwort auf die Frage