Merhaba arkadaşlar. Son yazımda Yazılım Mühendisliği dersi için yaptığımız ve bir kaç Java teknolojisini kullandığımız projeyi sizlere anlatmıştım. Önceki 2 yazıda da metot ve interface ile değer değişimi yakalamayı öğrenmiştik. Bu yazıda ise metot ve interface ile tetiklenme (action) olay yakalamayı öğreneceğiz.
Dersimize başlamadan önce söylemek istediğim bir şey var. JSF Video derslerine de bir süre önce başladım ve şu anda 3 video dersi oldu. Videoları izleyip görüş bildirirseniz videoların kalitesi adına çok iyi olur arkadaşlar. Videolara https://www.youtube.com/channel/UCn-fQIT3kPNIqEVdAjvUGdw/videos linkinden ulaşabilirsiniz.
Örnek uygulamamızda index sayfamız içinde hem metot ile kullanıma hem de interface ile kullanıma örnek mevcut arkadaşlar.
index.xhtml Kodu
<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://xmlns.jcp.org/jsf/core"> <h:head> <title>JSF-Metot Ve Interface İle Action Event Handling</title> </h:head> <h:body> <h:form> <h2>Metot İle Kullanımı</h2> <h:commandButton id="actionListenerOzelligi" value="TIKLA" action="sonuc.xhtml?faces-redirect=true" actionListener="#{actionEventBean.actionMetot}"/> <h2>Interface İle Kullanım</h2> <h:commandButton id="fActionListenerOzelliği" value="TIKLA" action="sonuc.xhtml?faces-redirect=true"> <f:actionListener type="ActionEventClass"/> </h:commandButton> </h:form> </h:body> </html>
index.xhtml kodumuz içinde metot ile kullanım kısmına bakalım. Tanımlamış olduğumuz bir metodu direk kullanmak istediğimizde butonun actionListener özelliğine yazmış olduğumuz metodu atıyoruz arkadaşlar.
Interface ile kullanım kısmında ise Java sınıfımız içinde ActionListener arabirimini uyguladığımız sınıfı f:actionListener etiketinin type özelliğine atamamız yeterli. Buton gidip o sınıftaki processAction metodunu arayıp işlemi gerçekleştirecek.
ActionEventBean.java Kodu
import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; import javax.faces.event.ActionEvent; import javax.faces.event.ActionListener; @ManagedBean @RequestScoped public class ActionEventBean { public void actionMetot(ActionEvent event) { String butonId=event.getComponent().getClientId(); System.out.println(butonId); } }
ActionEventBean Java sınıfımız içinde bir actionListener metodu tanımladık ve ActionEvent tipinde bir parametre almasını sağladık. Xhtml kodumuz içinde bir metodu actionListener olarak kullanabilmemiz için ActionEvent tipinde bir parametre alması gerekmektedir.
Butona tıklandığında event nesnesi ile tıklanan butonun id bilgisini çekip konsola yazdırıyoruz. Burada getClientId metodu sizin atadığınız id bilgisini ve JSF tarafından atanan id bilgisini birleştirir. Eğer sadece sizin istediğiniz id bilgisini getirmek isterseniz getId metodu yeterli olacaktır. Ne demek istediğimi ekran çıktılarında daha iyi anlayacaksınız.
ActionEventClass.java Kodu
import javax.faces.event.ActionEvent; import javax.faces.event.ActionListener; public class ActionEventClass implements ActionListener{ @Override public void processAction(ActionEvent event) { String butonId=event.getComponent().getClientId(); System.out.println(butonId); } }
ActionEventClass sınıfımıza öncelikle ActionListener arabirimini (interface) uyguluyoruz. Akabinde bu arabirimin içinde yer alan processAction metodunu Override ediyoruz ve ne yapmak istediğimizi bildiriyoruz. ActionEventBean sınıfımıza benzer şekilde burada da butonun id bilgisini alıp konsola yazdırıyoruz.
Ekran Çıktıları

Gördüğünüz gibi butona benim verdiğim id bilgisi ve JSF’nin kendi eklediği id bilgisi ile konsola basıldı.
Şimdi Interface İle Kullanım kısmındaki butona tıklıyorum.
Bu yazıda da bu kadar arkadaşlar. Gelecek yazıda Application Events konusunu işleyeceğiz. Sağlıcakla kalın.