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; } Listilceler=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