JSF

JSF Dersleri-ActionListener Kullanımı

Merhaba arkadaşlar. Bu yazımızda JSF içinde “ActionListener” kullanımını öğreneceğiz.

Hepimizin bildiği gibi Java’da Swing ile GUI kodlarken koyduğumuz butonların çalışması için onlara bir olay tanımlamamız gerekiyor. Bu olayları yazarken de ActionListener yapısını kullanıyoruz. JSF içinde butonlara action verip gideceği sayfayı tayin ediyoruz. Action’ın yanında butonara olay da tanımlayabiliriz. Şimdi örnek yapalım ve konuyu anlamaya çalışalım.

NetBeans ortamımızda “ActionListenerInJSF” adında bir proje oluşturalım ve projemize kaynak kodlarını verdiğim dosyaları ekleyelim.Kodların açıklaması kodun altındadır.

index.xhtml Kodu

JSF içinde actionListener’ın kullanımını 2 yöntemle yapabiliyoruz. Biz istersek ya butonun actionListener özelliğini ya da <f:actionListener> etiketini kullanabiliriz. Butonun actionListener özelliğini kullanmak istersek Java sınıfımızda tanımladığımız olay metodunu değer olarak veriyoruz. <f:actionListener> etiketini kullanmak istersek de ActionListener arayüzünü implement ettiğimiz sınıfın adını type özelliğine atıyoruz. O sınıfın içinde tanımlı olan overRide edilmiş olay metodu çağrılıyor.

result1.xhtml Kodu

Bu kod  içinde yaptığımız tek şey actionListener ile değerini değiştirdiğimiz nesneyi ekrana yazdırmak.

UserActionListener.java Kodu

Gördüğünüz gibi bu kod içinde yazdığımız sınıfı ActionListener arayüzünden implement ettik. Override ettiğimiz metodun içinde UserData sınıfı içindeki user nesnesinin setData metoduna erişmek normal Java ifadelerinden farklı bir ifade yazdık. Çünkü biz bu metodu JSF tarafından çağırıyoruz. Bu nedenle işlemimizi yukarıdaki koddaki gibi yapmalıyız. Bu kod içinde data nesnenin değerini değiştiriyoruz.

UserData.java Kodu

Bu kodumuzda data nesnesine ait get ve set metodlarımız, yönlendirme yapacak showResult veolay metodumuz olan updateData  metodumuz yer alıyor. Bu sınıfı ActionListener’dan implemet etmedik çünkü Override edeceğimiz bir metot yok. Olay metodunu kendimiz yazdık.

Bu iki yöntem arasındaki farkı özetlemek gerekirse şöyle diyebiliriz:

Butonun actionListener özellğini kullanmak istersek actionListener özellğine olay metodunu atıyoruz ve olay metodunun yer aldığı sınıfı ActionListener arayüzünden implement etmemize gerek yok. Ama <f:actionListener> kullanmak istersek type özelliğine sınıf isimini atayacağız ve o sınıfa actionListener’ı implement etmek zorundayız ve processAction metodunu Override etmemiz gerekiyor.

Ekran çıktılarımıza bakalım.

submit Butonuna tıklıyoruz.

submit Butonuna tıklıyoruz.

 

 

 

 

 

 

 

 

updateDate metodu çalıştı ve Hello World 1 yazdı.

updateDate metodu çalıştı ve Hello World 1 yazdı.

 

 

 

 

 

 

Geri gelip submit1 butonuna tıklıyorum. ActionListener'ı implement ettiğim sınıf çalıştı ve Hello World2 yazdı.

Geri gelip submit1 butonuna tıklıyorum. ActionListener’ı implement ettiğim sınıf çalıştı ve Hello World2 yazdı.

 

 

 

 

 

 

 

ActionListener’ı böyle kullanıyoruz arkadaşlar. ActionListener’ı kullanırken bir de parametre geçirme olayı var. Onu da bir sonraki yazıda öğreneceğiz. Görüşmek üzere esen kalın.