學(xué)習(xí)JSF的生命周期
OO中的事件,是對象通信的一種機(jī)制,對象通過響應(yīng)彼此的事件相互協(xié)調(diào)一致。JSP沒有事件,所以JSP的代碼需要程序員自己去協(xié)調(diào),什么時候執(zhí)行什么代碼,往往讓程序員大費周章。如果說JSP代碼是一群孩子的話,那么程序員就是這群孩子可憐的父母,吃喝拉撒全要操心,哪里能夠集中精力做點事情!所以,小孩要上學(xué),學(xué)知識可能只是一個借口,父母想找個老師代管,才是背后真正的原因。
JSF就是程序員們所要尋找的老師,把代碼片斷交給JSF去管理,程序員就可以集中精力編寫業(yè)務(wù)邏輯了。在JSF里,有四類事件。值改變事件,當(dāng)用戶在輸入框中輸入數(shù)據(jù)后發(fā)生;動作事件,當(dāng)用戶提交Form時發(fā)生;數(shù)據(jù)模型事件,當(dāng)數(shù)據(jù)表的某行被選中時發(fā)生;生命周期事件,當(dāng)生命周期從一個階段進(jìn)入另一個階段時發(fā)生。除了生命周期事件,其他事件都是桌面程序中大家所熟知的,而生命周期事件可以想象成窗口事件,例如窗口的生成、關(guān)閉、激活等等。
談到JSF,就不能不談?wù)凧SF請求處理的生命周期。為什么很多人覺得JSF難學(xué)?都是生命周期惹的禍。JSP的生命周期只有一個階段,而JSF卻有6個階段!為什么要這樣呢?其實,這是JSF框架所必需的。JSF只有細(xì)分生命周期階段,才能對Request和Response施加粒度足夠細(xì)的控制,因為JSP那樣粗粒度的控制,不足以支撐UI組件模型和事件模式。
在我初學(xué)JSF時,生命周期成了我最大的障礙。不管我如何咬文嚼字地推敲JSF規(guī)范中關(guān)于生命周期的描述,我都無法弄明白到底專家們在說什么。甚至直到我完成了我的首個JSF程序的開發(fā),我還是不懂。這讓我十分的惴惴不安,時時擔(dān)心自己誤入歧途。奇怪的是,不論是Sun的Tutorial,還是JSF的官方規(guī)范都把生命周期放在“頭版頭條”的位置,一開篇就大肆推銷生命周期概念,生命周期真的那么重要嗎?
這絕對是一個錯誤!生命周期是JSF的核心,但不是程序員的必修課,初涉JSF的程序員,根本沒有必要浪費精力在生命周期晦澀的概念里糾纏,不懂生命周期,照樣可以用JSF來編程?;ê苌俚臅r間看看各個UI組件的功能和屬性,然后弄明白各類事件的含義以及應(yīng)該如何響應(yīng)這些事件,了解一下JSF可配置的頁面導(dǎo)航機(jī)制,再搞清楚Managed Bean是什么東西,馬上就可以動手編寫你的第一個JSF程序了!
生命周期當(dāng)然重要,不理解生命周期是難以在JSF中深入下去的。但是,如果有機(jī)會讓我來寫JSF的入門教程的話,我會把生命周期放在最后一章,等大家都有了JSF的實踐經(jīng)驗,對JSF是如何簡化Java的Web編程有了感性的認(rèn)識,再來深入剖析JSF的生命周期,才能水到渠成,一點就通。
【編輯推薦】