Twórz listy rozwijane zależne / kaskadowe selectOneMenu w JSF
Próbuję stworzyć 4 zależne menu.
Gdy użytkownik wybierze element z pierwszego menu, drugie menu pokaże dane zależne, a gdy użytkownik wybierze element z drugiego, trzeci wyświetli dane zależne i tak dalej.
Użytkownik zobaczy elementy tylko w pierwszym menu, a pozostałe będą puste. Jeśli wybierze element w pierwszym menu, drugi pokaże dane, ale trzeci i czwarty pozostaną puste, i tak dalej. Użytkownik musi ostatecznie wybrać wpisy ze wszystkich 4 menu.
<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>
węzły Klasa 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"));
}
}
działa tylko w pierwszych 2 menu, pozostałe 2 menu otrzymują wartości null