1、JSF 的 life cycle html
1.1 JSF(JaveServer Faces)生命週期有六個階段,這六個階段顯示了典型的一個JSF處理一個form GUI雖須要作的事情:java
Restore View - 創建或者恢復原來的頁面服務器
Apply Request Values - 設置請求值爲組件的提交的值app
Process Validations - 轉換和驗證組建的值. 設置組建的值爲組件提交的值性能
Update Model Values - 設置Backing bean的屬性值爲組件的值 url
Invoke Application - 執行actionListeners and actions.spa
Render Response - 返回response.code
這裏值得提到的一點是若是組件裏面有immidiate這個attribute,對於這個組件JSF的生命週期會從Apply Request Value這一步驟直接跳到Render Response而不會進行中間的步驟component
圖示以下:orm
或者以下圖:
1.2 對JavaServer Faces生命週期的進一步概述:
JavaServer Faces應用程序的生命週期從客戶端對頁面發出HTTP請求開始,到服務器響應頁面時結束,而後轉換爲HTML。
生命週期能夠分爲兩個主要階段:執行和呈現。執行階段進一步劃分爲子階段,以支持複雜的組件樹。該結構要求將組件數據轉換和驗證,處理組件事件,並以有序的方式將組件數據傳播到bean。
JavaServer Faces頁面由一棵名爲view的組件樹表示。在生命週期中,JavaServer Faces實現必須在考慮從先前提交的頁面中保存的狀態時構建視圖。當客戶端請求一個頁面時,JavaServer Faces實現執行幾個任務,例如驗證視圖中組件的數據輸入,並將輸入數據轉換爲在服務器端指定的類型。
JavaServer Faces實現執行全部這些任務,由於JavaServer中的一系列步驟都面臨請求-響應生命週期。下圖說明了這些步驟。
2、FACELETS 的 life cycle
(1) JSF規範定義了JavaServer Faces應用程序的生命週期。如下步驟爲基於 Facelets 的應用程序的過程描述。
生命週期是在客戶端使用Facelets
建立的網頁發出新請求時啓動。 JSF建立一個新的組件樹或javax.faces.component.UIViewRoot
並放入FacesContex
。
若是可用的UIViewRoot
應用於Facelets
, 視圖能夠填充組件進行渲染。
新建的視圖做爲對客戶端的響應而被渲染。
在渲染時,存儲此視圖的狀態用於下一個請求。 存儲輸入組件和表單數據的狀態。
客戶端能夠與視圖交互,並從JSF應用程序請求另外一個視圖。 此時,保存的視圖從存儲狀態恢復。
恢復視圖再次經過JSF生命週期,若是沒有驗證問題,而且沒有觸發任何操做,最終將生成新視圖或從新呈現當前視圖。
若是請求相同的視圖,則再次呈現存儲的視圖。
若是要求新視圖,則繼續執行步驟2。
將新視圖做爲對客戶端的響應。
(2) Facelets是一種輕量級的頁面聲明語言,用於使用HTML樣式構建JSF(JavaServer Faces)視圖。
它包括如下功能:
優勢