第一階段:恢復視圖.
僅僅重建組件樹(視圖).
由FacesServletr控制器進行管理的"用戶請求"(內容,一般為JSP)",創建唯一視圖ID(XXX.JSP).
如果"請求參數"為空.直接跳到第六階段:渲染響應.
第二階段:應用請求值.
每個組件嘗試從客戶端的請求中找尋自已的參數更新組件值. (如果 immediate=true 命令(Commamnd)組件,則立即處理事件,直接轉到渲染響應階段進行繪制回應,輸入(Input)組件,則立即處理值變事件,然后轉到渲染響應階段. )
第三階段:驗證請求值
從客戶端傳來的字符串轉換為組件需要的自定義對象類型,然后進行驗證請求(調用getXxx方法獲取組件值,進行驗證(如果用戶自定義了驗證器,將立即執行,驗證失敗則返回第六階段:渲染響應值)).
第四階段:更新模型值
調用setXxx方法,更新托管Bean的屬性值.
第五階段:調用應用
對隊列里的事件進行調用.
第六階段:渲染響應
在視圖中顯示(調用getXxx方法給組件賦值,然后把組件值的自定義對象轉換為字符串,繪制出來傳給用戶) 所有組件.
執行流程:
Processing new Request!RESTORE_VIEW 1
before - RESTORE_VIEW 1
after - RESTORE_VIEW 1
before - RENDER_RESPONSE 6
UserBean:userName=null;pw=null;i=1
setusername=null;i=2
setpw=null;i=3
getusername=null;i=4
getpw=null;i=5
after - RENDER_RESPONSE 6
Done with Request!
----------------------------
Processing new Request!RESTORE_VIEW 1
before - RESTORE_VIEW 1
after - RESTORE_VIEW 1
before - APPLY_REQUEST_VALUES 2
after - APPLY_REQUEST_VALUES 2
before - PROCESS_VALIDATIONS 3
getusername=null;i=6
getpw=null;i=7
after - PROCESS_VALIDATIONS 3
before - UPDATE_MODEL_VALUES 4
setusername=12;i=8
setpw=34;i=9
after - UPDATE_MODEL_VALUES 4
before - INVOKE_APPLICATION 5
success;i=10
after - INVOKE_APPLICATION 5
before - RENDER_RESPONSE 6
getusername=12;i=11
getpw=ok;i=12
after - RENDER_RESPONSE 6
Done with Request!
-----------------------------
Processing new Request!RESTORE_VIEW 1
before - RESTORE_VIEW 1
after - RESTORE_VIEW 1
before - APPLY_REQUEST_VALUES 2
after - APPLY_REQUEST_VALUES 2
before - PROCESS_VALIDATIONS 3
getusername=12;i=13
getpw=ok;i=14
after - PROCESS_VALIDATIONS 3
before - UPDATE_MODEL_VALUES 4
setusername=32;i=15
setpw=ok;i=16
after - UPDATE_MODEL_VALUES 4
before - INVOKE_APPLICATION 5
success;i=17
after - INVOKE_APPLICATION 5
before - RENDER_RESPONSE 6
getusername=32;i=18
getpw=ok;i=19
after - RENDER_RESPONSE 6
Done with Request!