JSF – 05 – JSF Lifecycle

Merhaba Arkadaslar
Bu bolumde JSF Lifecycle (yasam dongusunu) konusunu inceleyecegiz.

JSF Lifecycle 6 fazdan/phase olusur.

  • Restore View
  • Apply Request Values
  • Process Validations
  • Update Model Values
  • Invoke Application
  • Render Response

Restore View

Restore kelime anlami olarak yenileme/yeniden kurmak anlamina gelmektedir.
Bir JSF sayfasi icin istek/request geldiginde , link ya da button tiklandiginda,  ilk olarak Restore View fazi baslatilir.

Her JSF sayfasi serverde Component Tree olarak veri yapisi seklinde saklanir.

xhtml sayfalarimizda h:form , h:inputText gibi taglar yer almaktadir. Her tag bir tag handler sinifi ile iliskilidir. JSF tag handler siniflari isbirligi icinde calisarak component tree yapisi olusturur. Component Tree bir tur veri yapisidir/ data structure. Bu veri yapisinda JSF sayfamizda yer alan Java objelerimiz yer alir. Ornegin 2 UIInput objemiz ; <h:inputText> ve <h:inputSecret> gibi.

JSF sayfasina ilk istek geldiginde Component Tree olusturulur , daha sonraki istekler icin hali hazirdaki bu Component Tree kullanilir.

Restore View fazinda 2 durum/case vardir ;

Non Postback Request/Initial Request
Non Postback / Initial request sayfaya yapilan yeni istek anlamina gelir. Restore View fazinda  bos bir UI Component Tree olusturulur ve mevcut/current FacesContext objesinde bu Component Tree saklanir (store)

Non PostBack request icin , JSF lifecycle’i Restore View fazindan sonra direkt olarak son faza ilerler yani Render Response fazi.

Render Response fazinda bos UI Component Tree , sayfadaki JSF componentleri ile doldurulur. Component Tree’nin mevcut durumu sonraki request/istekler icin saklanir (store).

Postback Request
Postback request ,  HTTP POST metodu ile form submit edildiginde ortaya cikar. Bu durumda , Restore View fazinda onceki istekte olusturulan Component Tree yeniden yapilandirilir/olusturulur ( restore).

Apply Request Values

Apply Request fazi , Postback Request sonrasinda , UI Component Tree restore edildikten sonra calisir.

UI Component Tree’deki her bir node/dugum submit edilen formdaki request values/degerlerler doldurulur/atanir.

Process Validation

Process Validation fazi , Apply Request Values fazindan sonra calisir. Bu fazda conversion(donusum) ve validation(dogrulama) islemi gerceklesir. JSF built-in olarak bir cok converter’a sahiptir. Bu converter’lari inceleyecegiz.

Component Tree’de saklanan degerlere “local value” denilir.  JSF sayfamizda validator kullanarak local value’leri kontrol edebiliriz (validation). Eger validation (dogrulama/gecerleme) islemi  sorunsuzca gerceklesirse , JSF lifecycle’i normal sekilde devam eder.

Eger convertion ya da validation isleminde bir hata olursa , hata mesaji , FacesMessage , FacesContext objesine eklenir. Bu durumda lifecycle , Render Response fazina ilerler ve ayni sayfa render edilir/gosterilir .
Hata mesajlari FacesContext objesine eklenir fakat bu hata mesajlarinin gosterilmesi icin  <h:message> <h:messages> UI componentleri JSF sayfasinda eklenmelidir.

Update Model Values

Process Validation tamamlandiktan sonra UI Component Tree’deki local value’ler icin convertion ve validation islemi tamamlandiktan sonra Update model values fazi baslar.

Update model values fazinda  Component Tree’deki local value’ler  ile  JSF Model (Managed Bean ) arasinda binding/baglanma islemi gerceklesir.
JSF Managed Bean property’leri , UI Component Tree’deki local value’ler ile guncellenir.

Invoke Application

Invoke Applicaiton fazi , bean property’lerimiz guncellendikten sonra , Update Model Values fazindan sonra calisacaktir. Invoke Application fazinda action code’lar calisir. Action code’tan kasit ; action method’lar ve action listener’lardir.

Invoke Application fazinda , navigation islemi NavigationHandler ile yapilir.

<p>
    <h:commandButton value="Login" action="welcome" />
</p>

Render Response

JSF Lifecycle da son olarak , Render Response fazi calisir. Render Response fazinda UI Component Tree veri yapisi encoding islemine tabi tutulur , donusturulur ( render )
Response render edilmeden once ,

h:inputText gibi tum JSF componentleri donusturulur (render)
Ornegin h:inputText JSF etiketi ;

<input type="text" name="j_idt5:j_idt7" />

seklinde HTML formatina donusturulur.Bu isleme encoding denir. Encode edilen sayfa browser/tarayiciya gonderilir ve browser/tarayici sayfayi gosterir.

jsf lifecycle

Yazimi burada sonlandiriyorum.
Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
OCP, Java SE 6 Programmer
OCE, Java EE 6 Web Component Developer

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *