27 Eylül 2014 Cumartesi

JSF Primefaces MangedBeanler




        Bir önceki JSF yazımda JSF'den ve Primefaces'ten kısaca bahsetmiştim. Bu yazım konusu başlıktan da anlaşılabileceği gibi ManagedBeanler'dir.

        JSF ile oluşturacağımız web sitelerini iki kısma ayırabiliriz. Bunlardan ilki görsel kısmı , ikincisi ise dinamikliği sağlayan kod kısmıdır. Tüm web sitelerinde olduğu gibi burada da görsel kısmı CSS , Javascript ve HTML kodları ile oluşturuyoruz. Kod kısmında ise JSF framework ve bu framework içerisinde Primefaces kütüphanesini kullanıyoruz. Burada xhtml ile Java arasındaki ilişki nasıl kuruluyor veya oluşturduğumuz bir formdaki verileri nasıl kod kısmına aktarabiliyoruz sorusu doğal olarak aklımıza gelmiştir. İşte ManagedBean lerde tam olarak bu işe yarıyor.

        Öncelikle ManagedBean ler bildiğimiz Java class larıdır. Kendine has annotation ları mevcut. Aşağıda bu yazı için yaptığım uygulamada kullandığım ManagedBean bulunmaktadır. Buradan inceleyebilirsiniz. 

package com.beans;


import javax.inject.Named;

import javax.enterprise.context.SessionScoped;                                                                  

import java.io.Serializable;


@Named(value = "ilkBean")

@SessionScoped


public class ilkBean implements Serializable {


     private String ad;

     private String soyad;


public String getAd() {

     return ad;

}

public void setAd(String ad) {

     this.ad = ad;

}

public String getSoyad() {

     return soyad;

}

public void setSoyad(String soyad) {

     this.soyad = soyad;

}

public ilkBean() {

}


}


        Bu ManagedBean içerisindeki “private String ad; private String soyad;” satırlarını ben yazdım gerisini NetBeans. ManagedBean hem NetBeans hem de Eclipse ile otomatik olarak oluşturabiliyoruz. Bu yüzden yazılı olanları ezbere bilmemize gerek yok. Bu iki satırlı kodu yazdıktan sonra getter ve setter larıda sağtık ile kolayca ekleyebiliyoruz. Getter ve Setter lar sayesinde Bean içerisinde veriler yazılıp saklanabiliyor. Eğer bir değişkeni veri tutması için tanımlamışsak getter ve setter larını kesinlikle eklemeliyiz.

        Ancak burada önemli olan kısım @Named(value = "ilkBean") @SessionScoped yazan kısımdır. Name ManagedBean'nin ismini belirtiyor , buradan istediğimiz şekilde ismini değiştirerek xhtml kısmından o isimle çağırabiliyoruz. Session ise ManagedBean türünü belirtiyor. Bildiğim kadarıyla 4-5 çeşit türü mevcut. Bunlardan en çok kullanılanları View ve Session olanlarıdır. Bunların farklılıklarını bir örnekle açıklamaya çalışayım. Örneğin ManagedBean içerisine ad soyad şeklinde String ifadeler tanımladık. ManagedBean türü olarak View'i seçtik. Sayfamızda ad ve soyad için inputText ler mevcut ve buradan verileri aldığımızda ManagedBean içeirisinde tutuluyor. Ama başka bir sayfaya geçtiğimizde bu tutulan veriler sıfırlanıyor ve başlangıç durumuna geliyor. Kısacası Bean içerisine yazılan veriler diğer sayfaya geçtiğimizde uçuyor. Session içinde aynı durumu varsayarsak Bean içerisine kaydedilen veriler sayfa değişse bile korunuyor. Temel farkları bu. Başka ManagedBean türleri de mevcut. Örneğin ApplicaitonScoped , bunu kullanırsanız birey sisteme giriş yaptığında oluşturulan Session uygulamamız kapanana kadar yaşamaya devam eder. Uygulamanın kapanması derken bireyin tarayıcısı değil server üzerinde çalışan web sitemizden bahsediyorum. Bu örnek uygun olur mu tam emin değilim ancak yine de yazayım ; Twitter gibi , siteye giriş yapıyoruz , sonrasında habire giriş yapmıyoruz. Kaldığımız yerden sürekli devam ediyoruz. Umarım yanlış bir örnek vermemişimdir.

        Genel tanım böyleydi. Xhtml kısmından da ManagedBean içerisine #{ilkBean.ad} veya #{ilkBean.soyad} şeklinde tanımladığımız değişkenlere veri yazabiliyor ve aynı şekilde okuyabiliyoruz.



         Aşağıda daha anlaşılır olması için sadece JSF componentlerini içeren yaptığım basit bir uygulama videosunu paylaşıyorum. Eğer izlerseniz yukarıda bahsedilenleri daha iyi anlayacağınızı düşünüyorum.   



0 yorum:

Yorum Gönder