學習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來編程?;ê苌俚臅r間看看各個UI組件的功能和屬性,然后弄明白各類事件的含義以及應該如何響應這些事件,了解一下JSF可配置的頁面導航機制,再搞清楚Managed Bean是什么東西,馬上就可以動手編寫你的第一個JSF程序了!
生命周期當然重要,不理解生命周期是難以在JSF中深入下去的。但是,如果有機會讓我來寫JSF的入門教程的話,我會把生命周期放在最后一章,等大家都有了JSF的實踐經驗,對JSF是如何簡化Java的Web編程有了感性的認識,再來深入剖析JSF的生命周期,才能水到渠成,一點就通。
【編輯推薦】