RichFaces ile Entity leri Otomatik Tamamlama

RichFaces

RichFaces

Uygulamalarınızda otomatik tamamlama yapabileceğiniz veri giriş alanları yapmak isterseniz bunun için RichFaces tarafında rich:suggestionbox ı kullanabilirsiniz. Bu bileşen özellikle büyük verilerin tamamlansında dinamik bir özellik taşıyor. Tamamlama client tarafında değil component üzerinde deki bir metodta arama şeklinde yapılıyor.

Aşağıdaki örnekte öncelikli olarak ön yüz de arama yapılıyor. Burada suggetionbox ogrenci isimli bir inputText alanına bağlanıyor. Ancak bu alan içerisinde bir value binding yok. Çünkü bind edeceğimiz nesne bir entity ve direkt atama yapmak gerekiyor. Biz bu işi suggetionbox içerisindeki a4j:support ile hallediyoruz. Burada onselect event i ile izinHome.instance.ogrenci nesnesine seçili nesneyi bind etmiş oluyoruz.

    <h:inputText id="ogrenci" value="" />
    <rich:suggestionbox for="ogrenci" fetchValue="#{ogrenciList.ad}" suggestionAction="#{ogrenciList.tamamla}" var="ogr" minChars="2">
     <h:column>
      <h:outputText value="#{ogr.ad}" />
     </h:column>
     <a4j:support ajaxSingle="true" event="onselect" >      
      <f:setPropertyActionListener value="#{ogr}" target="#{izinHome.instance.ogrenci}" />
     </a4j:support>
    </rich:suggestionbox>

Arama operasyonu ise aşağıdaki gibi metod içerisinde yapılıyor.

    private String ad;
     
    public List<Ogrenci> tamamla(Object obj) {
     return this.getSession().createQuery("from Ogrenci where name like :ad").setParameter("ad", obj + "%").list();
    }
     
    public void setAd(String ad) {
     this.ad = ad;
    }
     
    public String getAd() {
     return ad;
    }
Jul 29th, 2011
No comments yet.

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>