JSF Life Cycle:java
![](http://static.javashuo.com/static/loading.gif)
1)恢復視圖
視圖表示組成特定頁面的全部組件。它被保存在客戶端(一般存儲在隱藏字段中)或服務器中(一般在會話中)。根據請求訪問的視圖ID(頁面地址),重建JSF 組件DOM樹。若是JSF頁面是第一次訪問,也便是視圖ID在內存中沒沒有存根,那麼JSF會在內存中構建JSF組件的DOM樹。恢復視圖也確保了組件的值,與樹中的組件相關聯的事件監聽器、驗證器或者轉換器,都被恢復。
2)應用請求值
JSF組件獲取請求中的屬於本身的值,包括Local值,和submit值.同時處理轉換,轉換成功,更新local值(submit轉換結果),固然過程沒有那麼簡單,JSF處理器有本身的一套解碼過程。
3) 執行驗證
在處理驗證階段,JSF遍歷組件樹並檢查每一個組件,看是否每一個組件的被提交值均可以接受。驗證發生前,被提交值將首先由註冊到該組件的轉換器或者默認轉換器進行轉換。而後驗證直接由組件進行或者委託給一個或者多個其餘驗證器來進行。若是用戶的輸入無效就會向FacesContext中增長一個錯誤消息,而且該組件會被表示爲無效,而後轉到響應階段,顯示當前視圖,表示錯誤信息。
4)更新模型值:若是全部的組件本地值轉換驗證等均成功,此時JSF就會根據EL處理關聯的bean,並更新bean綁定值.在此處JSF會根據EL綁定加載配置的後臺bean。
5)調用應用:調用註冊的偵聽器,而後執行事件驅動,獲取下一個視圖。偵聽器此時能夠有效的偵聽到UI組件的各項數據,事件驅動部分即action能夠有效的獲取被更新的後臺bean數據。執行本身的業務邏輯。
6)呈現響應
到此請求處理結束,根據導航規則,呈現響應的頁面.依次執行…
JavaServer Faces Standard Request-Response Lifecycle: 瀏覽器
![](http://static.javashuo.com/static/loading.gif)
JavaServer Faces規範定義了JavaServer Faces應用程序的生命週期。有關今生命週期的更多信息,請參見JavaServer Faces應用程序的生命週期。下面的步驟描述了應用於基於facelet的應用程序的過程。
1)當客戶端(例如瀏覽器)向使用Facelets建立的頁面發出新的請求時,將建立新的組件樹或javax.faces.component.UIViewRoot,並將其放置在FacesContext中。
2)UIViewRoot應用於Facelets,視圖中填充了用於呈現的組件。
3)新構建的視圖做爲對客戶機的響應返回。
4)在呈現時,此視圖的狀態存儲爲下一個請求。存儲輸入組件和表單數據的狀態。
5)客戶端能夠與視圖交互,並從JavaServer Faces應用程序請求另外一個視圖或更改。此時,保存的視圖從存儲狀態恢復。
6)恢復的視圖再一次經過JavaServer Faces生命週期,它最終將生成一個新的視圖,或者從新呈現當前視圖,若是沒有驗證問題,而且沒有觸發操做。
7)若是請求相同的視圖,則再次呈現存儲視圖。
8)若是請求新視圖,則繼續執行步驟2中描述的流程。
9)而後將新視圖做爲對客戶機的響應返回。服務器