javascript
JSF和Facelets的lifecircle
1.JSF生命周期
1)恢復視圖(Restore View)
視圖表示組成特定頁面的所有組件。它被保存在 客戶端(通常存儲在隱藏字段中)或服務器中(通常在會話中)。根據請求訪問的視圖ID(頁面地址),重建JSF 組件DOM樹。如果JSF頁面是第一次訪問,也即是視圖ID在內存中沒沒有存根,那么JSF會在內存中構建JSF組件的DOM樹。恢復視圖也確保了組件的值,與樹中的組件相關聯的事件監聽器、驗證器或者轉換器,都被恢復。
2)應用請求值(Apply Request Values)
JSF組件獲取請求中的屬于自己的值,包括Local值,和submit值.同時處理轉換,轉換成功,更新local值(submit轉換結果),當然過程沒有那么簡單,JSF處理器有自己的一套解碼過程。
3) 執行驗證
在處理驗證階段,JSF遍歷組件樹并檢查每個組件,看是否每個組件的被提交值都可以接受。驗證發生前,被提交值將首先由注冊到該組件的 轉換器或者默認轉換器進行轉換。然后驗證直接由組件進行或者委托給一個或者多個其他驗證器來進行。如果用戶的輸入無效就會向FacesContext中增加一個錯誤消息,并且該組件會被表示為無效,然后轉到響應階段,顯示當前視圖,表示 錯誤信息。
4)更新模型值:如果所有的組件本地值轉換驗證等均成功,此時JSF就會根據EL處理關聯的bean,并更新bean綁定值.在此處JSF會根據EL綁定加載配置的后臺bean。
5)調用應用:調用注冊的偵聽器,然后執行 事件驅動,獲取下一個視圖。偵聽器此時可以有效的偵聽到UI組件的各項數據, 事件驅動部分即action可以有效的獲取被更新的后臺bean數據。執行自己的業務邏輯。
6)渲染響應(Render Response)
到此請求處理結束,根據導航規則,渲染響應的頁面,依次執行。
?
?
2.Facelets生命周期
JSF規范定義了JavaServer Faces應用程序的生命周期。以下步驟為基于 Facelets 的應用程序的過程描述。
生命周期是在客戶端使用Facelets創建的網頁發出新請求時啟動。 JSF創建一個新的組件樹或javax.faces.component.UIViewRoot并放入FacesContex。
如果可用的UIViewRoot應用于Facelets, 視圖可以填充組件進行渲染。
新建的視圖作為對客戶端的響應而被渲染。
在渲染時,存儲此視圖的狀態用于下一個請求。 存儲輸入組件和表單數據的狀態。
客戶端可以與視圖交互,并從JSF應用程序請求另一個視圖。 此時,保存的視圖從存儲狀態恢復。
恢復視圖再次通過JSF生命周期,如果沒有驗證問題,并且沒有觸發任何操作,最終將生成新視圖或重新呈現當前視圖。
如果請求相同的視圖,則再次呈現存儲的視圖。
如果要求新視圖,則繼續執行步驟2。
將新視圖作為對客戶端的響應。
轉載于:https://www.cnblogs.com/XGQXGQ/p/8919030.html
總結
以上是生活随笔為你收集整理的JSF和Facelets的lifecircle的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell分析日志常用指令合集
- 下一篇: Django模板系统 运算