天天看點

JSF的事件和生命周期

OO中的事件,是對象通信的一種機制,對象通過響應彼此的事件互相協調一緻。JSP沒有事件,是以JSP的代碼需要程式員自己去協調,什麼時候執行什麼代碼,往往讓程式員大費周章。如果說JSP代碼是一群孩子的話,那麼程式員就是這群孩子可憐的父母,吃喝拉撒全要操心,哪裡能夠集中精力做點事情!是以,小孩要上學,學知識可能隻是一個借口,父母想找個老師代管,才是背後真正的原因。

    JSF就是程式員們所要尋找的老師,把代碼片斷交給JSF去管理,程式員就可以集中精力編寫業務邏輯了。在JSF裡,有四類事件。值改變事件,當使用者在輸入框中輸入資料後發生;動作事件,當使用者送出Form時發生;資料模型事件,當資料表的某行被選中時發生;生命周期事件,當生命周期從一個階段進入另一個階段時發生。除了生命周期事件,其他事件都是桌面程式中大家所熟知的,而生命周期事件可以想象成視窗事件,例如視窗的生成、關閉、激活等等。

    談到JSF,就不能不談談JSF請求處理的生命周期。為什麼很多人覺得JSF難學?都是生命周期惹的禍。JSP的生命周期隻有一個階段,而JSF卻有6個階段!為什麼要這樣呢?其實,這是JSF架構所必需的。JSF隻有細分生命周期階段,才能對Request和Response施加粒度足夠細的控制,因為JSP那樣粗粒度的控制,不足以支撐UI元件模型和事件模式。

    在我初學JSF時,生命周期成了我最大的障礙。不管我如何咬文嚼字地推敲JSF規範中關于生命周期的描述,我都無法弄明白到底專家們在說什麼。甚至直到我完成了我的首個JSF程式的開發,我還是不懂。這讓我十分的惴惴不安,時時擔心自己誤入歧途。奇怪的是,不論是Sun的Tutorial,還是JSF的官方規範都把生命周期放在“頭版頭條”的位置,一開篇就大肆推銷生命周期概念,生命周期真的那麼重要嗎?

    這絕對是一個錯誤!生命周期是JSF的核心,但不是程式員的必修課,初涉JSF的程式員,根本沒有必要浪費精力在生命周期晦澀的概念裡糾纏,不懂生命周期,照樣可以用JSF來程式設計。花很少的時間看看各個UI元件的功能和屬性,然後弄明白各類事件的含義以及應該如何響應這些事件,了解一下JSF可配置的頁面導航機制,再搞清楚Managed Bean是什麼東西,馬上就可以動手編寫你的第一個JSF程式了!

    生命周期當然重要,不了解生命周期是難以在JSF中深入下去的。但是,如果有機會讓我來寫JSF的入門教程的話,我會把生命周期放在最後一章,等大家都有了JSF的實踐經驗,對JSF是如何簡化Java的Web程式設計有了感性的認識,再來深入剖析JSF的生命周期,才能水到渠成,一點就通。

繼續閱讀