JSF

JSF Dersleri-Event Handling-ValueChangeEvent (Metot İle)

Merhaba arkadaşlar. Birkaç yazılık bir yazı dizi halinde gelecek derslerimizde  JSF’nin Olay Yakalama (Event Handling)  yöntemlerini inceleyeceğiz. Daha önceleri de belirttiğimiz gibi JSF olaylar üzerine inşa edilmiş bir çatı idi. Yani meydana gelecek olaylara göre davranacak bir çatı. JSF’yi inşa edenler bu olayları 3 gruba bölmüşler:

  • ValueChangeEvent
  • ActionEvent
  • ApplicationEvent

Biz bu dersimizde ValueChangeEvent konusunu işleyeceğiz. Adından da anlıyacağınız üzere bu olay tipi değer değiştiği anda bir olay tetiklenmesini sağlayan tiptir.

Bizim bir selectOneMenu’müz olduğunu düşünelim ve kullanıcının bu selectOneMenu’den bir değer seçtiğinde sayfadaki bir şeyin otomatik değişmesini istiyoruz. Bu durumda ValueChangeEvent kullanabiliriz.

ValueChangeEvent kullanmak istediğimizde bunun da iki yolu mevcut. İstersek valueChangeListener özelliğine bir metot atayarak kullanabilir,istersek de ValueChangeListener  interface’ini kullanabiliriz.

Bu yazıda valueChangeListener  özelliğine metot atama yolu değişimi yakalamayı öğreneceğiz.  Gelecek yazıda ise interface kullanarak bu olayı yakalamayı öğreneceğiz. Şimdi örneğimize bakalım:

UlkeveKodBean.java Kodu

Java kodumuz içinde bir Map tanımladık. Map’ler bize Java’da anahtar-değer ilişkisi sağlayan yapılardır. Dikkat ederseniz bizim Map’imiz 2 parametre alıyor. Bunlardan birisi anahtar kelime örneğin isim diğeri de bu anahtar kelimeye karşılık gelen değerdir,örneğin ilkay.

JSF’de selectOneMenu bileşenine f:selectItem ile veri eklemek istediğimizde itemLabel ve itemValue özelliklerine değer atamamız gerekiyor. Eğer Map yapısını kullanırsak ve f:selectItems’a value olarak bu Map yapısını verirsek  anahtar kelime(birinci parametre) itemLabel olarak,ikinci kelime itemVaue olarak geçiyor.  Alttaki xhtml kodunu da incelediğinizde daha iyi anlayacaksınız.

listeyiDoldur metodu ile uygulama çalıştığı anda listenin dolmasını sağlıyoruz. @PostConstruct bize yardım ediyor.  @PostConstruct ile işaretlenmiş metotlar constructor‘ların akabinde hemen çalışır.

ulkeKoduDegisti metodu aldığı ValueChangeEvent parametresi ile değer değişimini yakalar ve gelen yeni değeri ülke kodu değişkenine atar.

Diğerleri get-set metotlarımız.

index.xhtml Kodu

Xhtml kodumuz içinde  ulkeKodu id’li inputText bileşenimiz bize seçilen ülkenin ülke kodunu gösterecek.

selectOneMenu bileşenimizde value özelliği Java sınıfımızda seçilen değeri kimin tutacağını söylüyor. onchange=”submit()” ifadesi ile değer değişimini olduğunu bildirip gerekli metodu tetikliyoruz. valueChangeListener özelliğine değer değişimi olduğunda çalışacak metodu atıyoruz.  f:selectItems özelliğine Java sınıfını anlatırken bahsettiğim üzere Map yapımız olan ulkeler‘i atıyoruz.

Ekran Çıktıları

Screen Shot 2015-06-16 at 13.27.48

 

 

Screen Shot 2015-06-16 at 13.55.23

 

Azerbaycan’ı seçtiğimde ülke kodu tr‘den az‘ye değişiyor.

Bu yazıda bu kadar arkadaşlar. Gelecek yazıda ValueChangeListener ara birimi (interface) ile değer değişimini yakalamayı öğreneceğiz. Sağlıcakla kalın.

  • Rojbahar Aygaz

    bu örneği 2 tane selectOneMenu kullanarak yapmam lazım yani 1.de seçtiğim seçenekle ilgili şeyler 2. selectOneMenude seçenek olarak gösterilecek fakat ikisi de veritabanından çekilecek. 4-5 gündür uğraşıyorum fakat 2. selectOneMenu ye sadece ilk kaydı getirebiliyorum birden fazla kayıt getiremiyorum. Yardımcı olabilecek bi fikriniz mi var mı ?