Merhaba arkadaşlar. Bu makalede bir JSF uygulamasında Yaşam Döngüsü‘nü, hangi aşamaların gerçekleştiğini öğreneceğiz. Konumuza geçmeden önce söylemek istediğim bir şey var. JSF derslerini liste haline getirdim ve JSF’ye Giriş yazısında bu listeyi yayınladım. Tüm yazılara oradan ulaşabilirsiniz.
Şimdi konumuza geçelim.
JSF mimarisi içinde yaşam döngüsü 6 aşamadan oluşur. Bu 6 aşama İstek(Request) gelmesi başlar ve Cevap(Response) verilmesi ile biter. 6 aşama sırası ile şu şekildedir:
Şimdi bu aşamaların ne olduğuna,bu aşamalarda nelerin gerçekleştiğine değinelim.
Restore View: Kullanıcından bir istek geldiğinde gerçekleşen ilk aşamadır. Bu aşamada bileşen ağacı (bileşenlerin tutulduğu yapı) eğer oluşturulmamış ise oluşturulur,oluşturulmuş ise restore edilir. Olay yakalayıcıları ve geçerlilik denetleyicileri bileşenlere bağlanır ve bu yapı bir FacesContext nesnesi içinde saklanır. O anki isteğe ait bilgiler de FacesContext nesnesi içinde tutulur. Bu aşamadaki işlemler ViewHandler sınıfındaki restoreView metodu ile gerçekleştirilir.
Apply Request: Kullanıcının girdiği bilgiler bu aşamada alınır ve ilgili bileşenin local hafızasına ilgili değerler yüklenir. Bu aşamada girilen bilgilerin bileşen ağacındaki her bir bileşene ayrı ayrı yüklenmesi işlemi UIComponentBase sınıfındaki processDecodes adındaki bir metot vasıtası ile yapılır.
Process Validations: Kullanıcının girdiği verilerin denetlenmesi bu aşamada gerçekleşir. İlk olarak zorunlu tutulup tutulmadığı (required=”true”) kontrol edilir. Verinin geçerliliğininin denetlenebilmesi için verinin önce beklenen veri tipine dönüştürülmesi gerekir. Bu nedenle zorunluluk kontrolünün ardından dönüşüm kontrolü devreye girer. f:convertNumber gibi. Dönüşüm kontrolünün ardından devreye geçerlilik denetleyici (validator) girer. f:validateLength gibi. Eğer bu 3 kontrolden birisi başarısız olursa ilk aşama olan Restore View aşamasına dönülür. Bu aşamadaki kontroller UIComponentBase sınıfındaki processValidators metodu ile gerçekleştirilir.
Update Model Values: Kullanıcının girdiği bilgiler gerekli şartları taşıyıp Process Validations aşamasını geçerse Managed Bean içindeki değişkenlere aktarılır ve bu olay da bu aşamada meydana gelir. Bu işlem UIComponentBase sınıfındaki processUpdates adındaki bir metot vasıtası ile gerçekleştirilir.
Invoke Application: Managed Bean sınıflarımız içinde yazdığımız ve xhtml kodu içinde listener, action ve actionListener olarak atadığımız metotoların çağırılması bu aşamada gerçekleşir. Bu aşama UIComponentBase sınıfındaki processApplications metodu ile gerçekleşir.
Render Response: JSF yaşam döngüsünde gerçekleşen bu son aşama ile sayfanın yeni hali işlenir ve response kısmına verilir. Cevap işlenmeden önce kullanıcıya döndürülecek bu sayfa yapısı cache belleğe kaydedilir ve bu işlem UIViewRoot sınıfındaki saveState metodu ile gerçekleştirilir.
Bir JSF uygulamasında gerçekleşen yaşam döngüsü genel olarak bu şekilde anlatılabilir arkadaşlar.
Başka bir yazıda görüşmek üzere, sağlıcakla kalın.
Merhaba,
Yazınızı facebook sayesinde öğrendim. Oradaki slayt benim eğitim notlarımdan alınmıştır. Sanırım Melih bunu söylemeyi unutmuş. Resmin orijinalini isterseniz sunabilirim.
Kolay gelsin.
Merhaba Ümit Hocam.
Resmin size ait olduğunu bilmiyordum,Melih hocamın bir slaytında görmüştüm,o da sizden almış sanırım. Resmin orjinal halini vermenizden mutluluk duyarım.
Saygılarımla 🙂