Aşağıdaki örnekte il , ilçe ve mahalle bilgilerini açılır listeye yükleyen örnek görülmektedir. İl seçince ilçeler, ilçeler seçince de iller dolmaktadır :
<h:form>
<h:selectOneMenu value="#{testBean.il}">
<f:selectItems value="#{testBean.iller}"></f:selectItems>
<f:ajax event="change" render="ilce mahalle" listener="#{testBean.sehirChanged}"></f:ajax>
</h:selectOneMenu>
<h:selectOneMenu id="ilce" value="#{testBean.ilce}">
<f:selectItems value="#{testBean.ilceler}"></f:selectItems>
<f:ajax event="change" render="mahalle" listener="#{testBean.sehirIlceChanged}"></f:ajax>
</h:selectOneMenu>
<h:selectOneMenu id="mahalle" value="#{testBean.mahalle}">
<f:selectItems value="#{testBean.mahalleler}"></f:selectItems>
</h:selectOneMenu>
</h:form>
Yukarıda görüldüğü gibi illerin listesi ve altında da ilçelerin ve mahallelerin listesini gösteren selectOneMenu bileşeni blunmaktadır. TestBean de gerekli bölüm aşağıdaki gibidir :
@ManagedBean
@SessionScoped
public class TestBean {
private String il;
private String ilce;
private String mahalle;
public List<SelectItem> getIller(){
List<SelectItem> iller=new ArrayList<SelectItem>();
iller.add(new SelectItem("0","Seçiniz"));
iller.add(new SelectItem("34","İstanbul"));
iller.add(new SelectItem("6","Ankara"));
return iller;
}
public List<SelectItem> getIlceler(){
if(il==null){
return null;
}
List ilceler=new ArrayList<SelectItem>();
ilceler.add(new SelectItem("0","Seçiniz"));
if(il.equals("34")){
ilceler.add(new SelectItem("1","Fatih"));
ilceler.add(new SelectItem("2","Beşiktaş"));
ilceler.add(new SelectItem("3","Kadıköy"));
return ilceler;
}else if(il.equals("6")){
ilceler.add(new SelectItem("1","Çankaya"));
ilceler.add(new SelectItem("2","Yenimahalle"));
return ilceler;
}
return null;
}
public List<SelectItem> getMahalleler(){
if(ilce==null){
return null;
}
List mahalleler=new ArrayList();
if(mahalleler==null){
List<SelectItem> a=new ArrayList<SelectItem>();
ilceler.add(new SelectItem("0","Seçiniz"));
for(int i=0;i<10;i++){
a.add(new SelectItem(i,il+"-"+ilce+"-Mahalle-"+i));
}
return a;
}else{
return mahalleler;
}
}
public void sehirChanged(AjaxBehaviorEvent event){
ilce=null;
mahalle=null;
}
public void sehirIlceChanged(AjaxBehaviorEvent event){
mahalle=null;
}
}
İl listesinde bulundan f:ajax bileşeni, il seçimi yapıldığında çalışır ve ilce ve mahalle listesinin render edilmesini (yenilenmesini) sağlar. İlçe seçildiğinde de mahalle listesi yenilenir