JSF Ders33 - ManagedProperty
ManagedProperty, bir bean sınıfını başka bir bean sınıfına enjekte etmeye yarar. Bu işleme dependency injection (bağımlılık enjektesi) denir. Bu işlem sayesinde kendisine bean sınıfı enjekte edilen bean sınıfı o sınıfın özelliklerine erişebilir ve değiştirebilir.
Örneğin Def'ye Abc bean sınıfını enjekte edelim.
@ManagedBean(name="a") public class Abc{...} |
@ManagedBean public class Def{ @ManagedProperty(value="#{a}") private Abc abc; public void setAbc(Abc abc){ this.abc=abc; } public Abc getAbc(){ return Abc; } ... } |
Dikkat edilmesi gereken bir husus ilgili sınıfın setter/getter metodunun diğer sınıfta bulunması gerektiğidir.
Aşağıdaki örnekte iki bean sınıfı vardır. Mesaj ve Test bean sınıfları.
Mesaj sınıfı Test sınıfına enjekte edilmekte ve Test sınıfının sayi değişkeni setlendiğinde aynı zamanda managedProperty sayesinde Mesaj sınıfının mesaj değişken değeri değiştirilmektedir.
Bu işlemler sonucunda en son sonucu yazdırırken Mesaj sınıfının yeni mesaj değişken değeri ve Test sınıfının sayi değişken değeri yazdırılmaktadır.
Mesaj.java
package test; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; @SessionScoped @ManagedBean(name = "m") public class Mesaj { private String mesaj = "Girilen sayi "; public String getMesaj() { return mesaj; } public void setMesaj(String mesaj) { this.mesaj = mesaj; } }
Test.java
package test; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.SessionScoped; @SessionScoped @ManagedBean public class Test { private int sayi; private String sonuc; @ManagedProperty(value = "#{m}") private Mesaj m; public Mesaj getM() { return m; } public void setM(Mesaj m) { this.m = m; } public int getSayi() { return sayi; } public void setSayi(int sayi) { this.sayi = sayi; m.setMesaj("merhaba "); } public String getSonuc() { return m.getMesaj()+sayi; } public void setSonuc(String sonuc) { this.sonuc = sonuc; } }
index.xhtml
<!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:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"> <h:head> <title>index.xhtml</title> </h:head> <h:body> <h:form> Sayi gir.<br /> <h:inputText value="#{test.sayi}" /><br /><br /> <h:commandButton value="gonder" action="diger?faces-redirect=true" /> </h:form> </h:body> </html>
diger.xhtml
<!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:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"> <h:head> <title>diger.xhtml</title> </h:head> <h:body> # {t.sonuc} -> <h:outputText value="#{test.sonuc}"/><br/> # {m.mesaj} -> <h:outputText value="#{m.mesaj}"/> </h:body> </html>
Yorumlar
Yorum Gönder