En temel olarak konuya girmek gerekirse managed beanler Java da kullanılan class yapılarından biridir. Jsf ile birlikte kullanılan managed beanleri diğer java classlarından ayıran temel özelliği jsf sayfaları olan .xhtml sayfalarına bağlanabilme özelliklerinin olmasıdır. Managed beanlerin bir kullanım süresi vardır ve bu kullanım süreleri scope lar yardımıyla sağlanır.

Jsf 2.0 versiyonundan önce managed bean tanımlamak için faces-config.xml dosyaları kullanılmaktaydı. Jsf 2.0 versiyonu ile birlikte @ManagedBean annotion ile managed bean tanımlamak daha kolay hale gelmiştir.

Basit bir tane managed bean tanımı yapalım:

package com.networkerman.managedbean;

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

@ManagedBean
@SessionScoped
public class CustomerManagedBean {

    private Integer musteriNo;
    private String musteriAdi;
    private String musteriSoyadi;
    private String musteriAdres;

    public CustomerManagedBean() {
        super();
    }

    public Integer getMusteriNo() {
        return musteriNo;
    }

    public void setMusteriNo(Integer musteriNo) {
        this.musteriNo = musteriNo;
    }

    public String getMusteriAdi() {
        return musteriAdi;
    }

    public void setMusteriAdi(String musteriAdi) {
        this.musteriAdi = musteriAdi;
    }

    public String getMusteriSoyadi() {
        return musteriSoyadi;
    }

    public void setMusteriSoyAdi(String musteriSoyadi) {
        this.musteriSoyadi = musteriSoyadi;
    }

    public String getMusteriAdres() {
        return musteriAdres;
    }

    public void setMusteriAdres(String musteriAdres) {
        this.musteriAdres = musteriAdres;
    }

}

Yukarıdaki gibi managed bean class ımızı tanımladıktan sonra artık bu class jsf xhtml sayfasında nasıl çağıracağımıza bakalım. Jsf sayfası ile managed bean birbirine bağlanırken expression language olarak adlandırılan bir yapı kullanılır ve jsf için burada “#” işareti kullanılır. Basit bir jsf sayfası örneğinde bunu görelim :

<?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:p="http://primefaces.org/ui">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        
        <p:inputText id="musAdi" value="#{customerManagedBean.musteriAdi}" placeholder="Müşteri Adı"/>
        
        <p:inputText id="musAdi" value="#{customerManagedBean.musteriSoyAdi}" placeholder="Müşteri Soyadı"/>
        
        <p:inputText id="musAdi" value="#{customerManagedBean.musteriAdres}" placeholder="Müşteri Adres"/>

    </h:body>
</html>

Xhtml kodumuzda gördüğümüz gibi basitçe üç tane input alandan oluşan bir form oluşturduk. Burada “p:inputText” tagları içinde yer alan paramtrelerin value değerlerine bakarsak “#” ifadesi ile managed bean içerisindeki alanlar çağırarak kullandığını görüyoruz. Jsf bu örnek xhtml içerisinde inputtext kullandığımız için managed bean içerisinde tanımlanan get set metodlarından set metodunu kullanacaktır ama biz eğer aşağıdaki gibi bir xhtml sayfası yazsaydık jsf burada managed bean içinde yazılan get metodunu kullanacaktır.

<?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:p="http://primefaces.org/ui">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        Hello from Facelets
        <p:outputLabel value="#{customerManagedBean.musteriAdi} - #{customerManagedBean.musteriSoyAdi}"/>
    </h:body>
</html>

Xhtml sayfalarında “p:” ile başlayan tagler primefaces kütüphanesine ait olan taglerdir. Primefaces jsf de ön yüz yazımında bize kolaylık sağlayan en yararlı kütüphanelerden biridir. İleriki yazılarda primefaces ile ilgili yazılarım olacaktır.

Leave a Reply

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