17 Mart 2015 Salı

ManagedBean nasıl tanımlanır?

ManagedBean web.xml ya da annotation ile tanımlanabilir.
Genelde annotation yöntemini seçiyoruz.

classın başına @ManagedBean annotationı ekliyoruz. Yanına istenirse name="loginBean" gibi isim tanımlanabilir. Eğer tanımlanmazsa default olarak ismi class isminin küçük harfle başlayan halidir.

Bundan sonra scope bilgisi ekliyoruz. Örneğin: @RequestScoped gibi.

POJO


ManagedBean'lerde mutlaka boş contructor bulunmak zorundadır.
Bunun sebebi şu: client facelet'e eriştiği anda ManagedBean'ler initialize edilir.
Daha ortada parametre olmadığı için de boş constructor ile initialize etmek zorundadır.
Yine ManageBean'lerde property olmak zorunda. Yani her bir member için bir getter ve setter metodu bulunmalı.

ManagedBean nasıl çalışıyor?


Client daha parametre girip GET isteği yollamadan, parametre değeri bean'e gidiyor ve set ediliyor.
Bu durumda eğer bean'de default değer belirtilmişse propertynin default değeri sayfadaki value'ya koyuluyor.

EL yani expression language #{} parantezleri arasına yazılıyor.
JSP'de kullanılan $ ifadesi read-only dir.
Buradaki # ifadesi ise değer set edebilir. Yani hem okuyup, hem de yazabilir.
Bir input değerini alıp property'ye set edilebiliyor.
Örneğin:

<h:form>
    <h:inputText title="user name" value="#{formBean.name} />
    <h:commandButton action="#{formBean.isAuthorized}" value="Gönder"/>
 </h:form>

Burada command butona tıklandığında formBean'de işlem yapılması gerekiyor.
JSPdeki gibi direk sayfa linki veremiyoruz ("/hesap.jsp" diyerek sayfaya yönlendiremiyoruz).

ManagedBean'e metod yazıyoruz (isAuthorized() metodu). Sonra onu action'da çağırıyoruz.
Fakat çağırırken parantezleri () koymuyoruz.
onclick() metodu
dependency injection


JSF, Spring MVC ve ASP.NET MVC'ye biraz benzese de, aslında farklıdır.




Hiç yorum yok:

Yorum Gönder