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>

JSF ManagedProperty

JSF ManagedProperty

Yorumlar

Bu blogdaki popüler yayınlar

Java SE Ders24 - Composition (Kompozisyon)

Spring Ders20 - Aspect Oriented Programming - AspectJ Annotation Style

JSF Ders30 - Page Template (Sayfa Şablonu)