Haga múltiples listas desplegables dependientes / en cascada de selectOneMenu en JSF
Estoy tratando de hacer 4 menús dependientes.
Cuando el usuario elige un elemento del primer menú, el segundo menú mostrará datos dependientes y cuando el usuario elija un elemento del segundo menú, el tercero mostrará datos dependientes y así sucesivamente.
El usuario solo verá los elementos en el primer menú y los otros estarán en blanco. Si elige un elemento en el primer menú, el segundo mostrará datos, pero el tercero y el cuarto permanecerán en blanco, y así sucesivamente. El usuario eventualmente debe elegir entradas de todos los 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>
nodos clase Java
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"));
}
}
solo funciona en los primeros 2 menús, los otros 2 menús obtienen valores nulos