[img]http://www.javaworld.com.tw/confluence/download/attachments/2810/jsfLifeCycle-1.jpg[/img]
扣除事件處理,JSF總共必須經過六個階段:
* 回復畫面(Restore View)
對於選擇的頁面如果是初次瀏覽則建立新的元件樹。如果是會話階段,會從使用者端或伺服器端的資料找尋資料以回復每個元件的狀態並重建元件樹,如果不包括請求參數,則直接跳過接下來的階段直接繪製回應。
* 套用申請值(Apply Request Values)
每個元件嘗試從到來的請求中找尋自己的參數並更新元件值,在這邊會觸發ActionEvent,這個事件會被排入佇列中,然後在喚起應用程式階段之後才會真正由事件處理者進行處理。
然而對於設定immeduate為true的命令(Commamnd)元件來說,會立即處理事件並跳過之後的階段直接繪製回應,而對於設定immediate為true的輸入(Input)元件,會馬上進行轉換驗證並處理值變事件,之後跳過接下來的階段,直接繪製回應。
* 執行驗證(Process Validations)
進行轉換與驗證處理,如果驗證錯誤,則會跳過之後的階段,直接繪製回應,結果是重新呼叫同一頁繪製結果。
* 更新模型值(Update Model Values)
更新每一個與元件綁定的backing bean或模型物件。
* 喚起應用程式(Invoke Application)
處理動作事件,並進行後端應用程式邏輯。
* 繪製回應(Render Response)
使用繪製器繪製頁面。
扣除事件處理,JSF總共必須經過六個階段:
* 回復畫面(Restore View)
對於選擇的頁面如果是初次瀏覽則建立新的元件樹。如果是會話階段,會從使用者端或伺服器端的資料找尋資料以回復每個元件的狀態並重建元件樹,如果不包括請求參數,則直接跳過接下來的階段直接繪製回應。
* 套用申請值(Apply Request Values)
每個元件嘗試從到來的請求中找尋自己的參數並更新元件值,在這邊會觸發ActionEvent,這個事件會被排入佇列中,然後在喚起應用程式階段之後才會真正由事件處理者進行處理。
然而對於設定immeduate為true的命令(Commamnd)元件來說,會立即處理事件並跳過之後的階段直接繪製回應,而對於設定immediate為true的輸入(Input)元件,會馬上進行轉換驗證並處理值變事件,之後跳過接下來的階段,直接繪製回應。
* 執行驗證(Process Validations)
進行轉換與驗證處理,如果驗證錯誤,則會跳過之後的階段,直接繪製回應,結果是重新呼叫同一頁繪製結果。
* 更新模型值(Update Model Values)
更新每一個與元件綁定的backing bean或模型物件。
* 喚起應用程式(Invoke Application)
處理動作事件,並進行後端應用程式邏輯。
* 繪製回應(Render Response)
使用繪製器繪製頁面。