和JSF生命週期相關的請求與響應有兩類:分別是Faces response和Non-Faces response,以及Faces request和Non-Faces。jsp
另外有三種場景與此相關分別是:spa
以上描述的是JSF頁面和非JSF頁面之間轉換的問題,能夠說是JSF生命週期中的一種特殊的狀況。code
標準請求處理的生命週期:orm
Restore View(視圖重建)階段:blog
當咱們請求一個JSF頁面的時候,這個階段會出現。JSF會構建這個頁面的視圖,鏈接組建的事件處理器和驗證器,生命週期
並將頁面的視圖存到Faces Context的實例中。FacesContext的實例中包含了一切用來處理獨立請求的信息。全部應用的組建標籤,事件處理器,轉換器和驗證器都會訪問它。隊列
若是對頁面的請求是初次請求,那麼系統會給一個空的視圖,並將生命週期推動到響應渲染階段。進程
應用請求階段(Apply Request Values Phase)事件
組件樹被重建以後,樹上的每個組件都會使用它們的decode方法來從請求參數中提取它們的新的值。這些值將會被這些組件本身保存起來。若是在提取值的時候發生了轉換失敗的錯誤,那麼和這個組件相關的一個錯誤信息會生成,並進入FacesContext(稱爲上下文)的隊列之中。這個錯誤信息將會在響應渲染階段(render response phase)和進程驗證階段產生的全部錯誤的結果一塊兒被顯示出來。ci
若是解碼方法和事件監聽器調用了上下文中的renderResponse方法,系統將會進入響應渲染階段。
若是事件在這個階段中已經被轉入隊列中,那麼系統會事件傳遞給對其感興趣的監聽。
若是某些頁面上的組件的當即屬性(immediate attributes)被置爲真的話,那麼,與這個組件相關的驗證,轉換和關聯事件操做都會在這個階段完成。
這時,若是程序須要跳轉到一個不一樣的應用中或者產生一個不包含任何JSF組件的響應的時候,能夠調用FacesContext.responseComplete
驗證處理階段(Process Validations Phase)
在這個階段,系統會執行組件樹上的組件註冊的所有的驗證器。系統會根據組件的屬性的驗證規則與本地值是否一致。
若是本地值非法,系統會在上下文中增長一個錯誤信息。而且將週期跳轉到響應渲染階段。頁面會再次渲染以便於顯示錯誤信息。若是有轉換的錯誤也會發生一樣的事情。
也可能發生像上一個階段同樣的跳轉和事件傳遞的狀況。
更新模型值(Update Model Values Phase)
更新與組件綁定的模型的值。有可能出現轉換錯誤,處理過程同上。其餘狀況同上。
應用執行階段(Invoke Application Phase)
系統在這一階段中會執行所有的應用級事件。跳轉同上。
請求渲染階段(Render Response Phase)
若是你使用jsp那麼系統會代替jsp容器進行渲染工做。若是是初次請求,系統會將組件加入到組件樹上。若是不是則不會。在以上兩種狀況下,組件都會隨着JSP容器解析頁面標籤的時候一併渲染本身。