JSF Managed Bean

jsf_with_facade

Managed Bean dediğimiz kavram aslında Java Class’ları diyebiliriz. Yazılımımızda kullanacağımız Bean’ların belirli bir süresi vardır. Managed Bean’ların yaşam sürelerini sonraki derslerde görecek olduğumuz (Scope Kavramı) Scope’ler yardımı ile sağlanmaktadır. Bean’lerin yönetiminin sağlanması Managed Bean ile olur. Java Server Faces sayfalarımızda kullanacağımız Beanları eklemede de kullanırız.

  • Managed Bean , JSF tarafindan ulasilan/yonetilen/manage Java bean’leridir.
  • JSF 2.0 dan once managed beanler WEB-INF/faces-config.xml dosyasinda tanimlanmak zorundadir. JSF 2.0 ile birlikte Managed beanler @ManagedBean annotation’i kullanilarak yapilabilmektedir.
Managed Bean Tanımlamak
package _01.hellojsf;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
//@ManagedBean(name="person")
@SessionScoped
public class PersonBean {

	private String name;
	private String password;

	public PersonBean(String name, String password) {
		super();
		this.name = name;
		this.password = password;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
	
}

Öncelikle Managed Bean kullanmak için kütüphanemizi import etmemiz gerekmekte.

  • import javax.faces.bean.ManagedBean;
  • @ManagedBean annotation’i class tanimimiz basinda yapiyoruz. import ettigimiz sinif javax.annotation.ManagedBean degil javax.faces.bean.ManagedBean dir.
  • @ManagedBean annotation’da name attribute kullanilabilir. Varsayilan olarak Java Bean convention isim olarak kullanilacaktir ; personBean
  • Varsayilan scope RequestScoped tur. Scope’lari ilerleyen bolumlerde inceleyegiz.
  • Bu tanımlamaları yaptıktan sonra getter ve setter metodları bulunması zorunlu olan bir Java Class’ı yazabiliriz.
Managed Bean Kullanımı

Managed Bean’imizi  tanımladık gerekli ayarlamalarımızı yaptık ve bu Bean’i JSF sayfalarımızda nasıl kullanacağız ona bakalım. Yukarıda Managed Bean oluşutururken tanımlamamız “personBean” olmuştu.

Biz Java Server Faces sayfalarımızda Bean’i çağırmak için Managed Bean için verdiğimiz ismi kullanmamız yeterli olacaktır. Bean’nin içerisinde ki metodlardan değer almak ve değer istemek için “personBean.xx” şeklinde bir yapıda kullanılmaktadır.

Örnek Login.xhtml Sayfamız

login.xhtml

<?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://java.sun.com/jsf/html">
<h:head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
   <title>Welcome</title>
</h:head>
<h:body>
   <h:form>
      <h3>Please enter your name and password.</h3>
      <table>
         <tr>
            <td>Name:</td>
            <td><h:inputText value="#{personBean.name}" /></td>
         </tr>
         <tr>
            <td>Password:</td>
            <td><h:inputSecret value="#{personBean.password}" /></td>
         </tr>
      </table>
      <p>
         <h:commandButton value="Login" action="welcome" />
      </p>
   </h:form>
</h:body>
</html>

input alani PersonBean ‘in name property degeriyle baglanir(bound).

<h:inputText value="#{personBean.name}" />

#{personBean.name}

JSF Expression Language , JSP Expression Language’ten farkli olarak calisir.
Sayfa goruntulendiginde , PersonBean ‘in getName metodunu cagirir , sayfada submit/gonderme islemi oldugunda setName metodu cagrilmaktadir.
JSF, setter metot’larini cagirmaktan sorumludur !

welcome.xhtml

Burada dikkat etmemiz gereken nokta #{personBean.name}  ifadesidir. Bu ifadeyi(Expression) h:inputText de value alaninda da kullandik. h:inputText component icin setName metodu calisacaktir fakat burada #{personBean.name} ifadesi getName ‘in calismasini saglar.
JSF, getter metot’larini cagirmaktan sorumludur !

<?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://java.sun.com/jsf/html">
<h:head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
   <title>Welcome</title>
</h:head>
<h:body>
   <h3>Welcome to www.injavawetrust.com JSF tutorial!
      #{personBean.name}!</h3>
</h:body>
</html>

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*
*