JSF 1.2 ve JPA ile SelectItem Oluşturma

JSF - Java Server Faces

JSF -JPA SelectItem Olusturma


Eğer JSF 1.2 kullanıyorsanız useçim bileşenlerinde f:selectItems içeriklerini doldurmak için SelectItem tipinde listeleriniz olmalı. Bu durumda bir çok geliştirici önce listeleri seçip ardından for donguleri ile bunları doldurmaya çalışıyor. Ancak Hibernate veya JPA kullanıyorsanız bunu aşağıdaki yöntem ile sorgu içerisinde nesne oluşturarak gerçekleştirebilirsiniz.


 

    public List<SelectItem> getSehirListesiSelect(){
     EntityManager em = EntityUtil.getEntityManager();
     return em.createQuery("select new javax.faces.model.SelectItem(s.id, s.ad) from Sehir s").getResultList();
    }

Kullanımı aşağıdaki gibidir.

    <h:selectOneMenu value="#{kullaniciBean.kullanici.sehir}">
     <f:selectItems value="#{sehiBean.sehirListesiSelect}" />
    </h:selectOneMenu>

Tabi Seam veya JSF 2.0 kullanıyorsanız buna gerek yok :)

Jul 19th, 2011
  1. halil
    Jul 20th, 2011 at 09:50 | #1

    peki bunu seam de en iyi performans ile yapma yöntemi nedir ?
    entityleri listediğimizde hepsinin ad alanı için bir sorgu çalışıyor.

  2. Jul 20th, 2011 at 10:07 | #2

    Tam olarak anlayamadim sorgu calisiyor derken her talep aninda mi sorgu geliyor diyorsunuz?

  3. halil
    Jul 20th, 2011 at 13:33 | #3

    mesela il entitysini bir listeye doldurup s:selectitem a bu listeyi verdiğimizde ve label olarak #{il.ad} dersek combobox sayfa açılışında adları gösterebilmek için her il için bir kez hibernate console ‘da sorgu görünüyor.

  4. Jul 20th, 2011 at 14:59 | #4

    Lazy loading ile ilgili olabilir. Sorgu ve listeleme kodunuzu yazabilirmisiniz ?

  5. halil
    Jul 20th, 2011 at 18:11 | #5

    hayır onu bende düşündüm, ad string ve lazy değil.

  6. Jul 20th, 2011 at 18:19 | #6

    Ad icin dememistim bagli herhangi bir sey icin ayrica bunlari application scope ta factory olarak tanimlayabilirsiniz veya cache kullanilabilir

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>