在JSF的幾個生命周期階段,分別會在以下幾個階段調用組件的Converter:
1,對于
UIInput組件:如果按鈕事件的immediate屬性為true(<h:commandButton immediate="true" .../>),JSF會在 [
Apply Request Values Phase:應用請求值階段],反之,JSF會在[
Process Validations Phase:數據檢查階段] 檢驗用戶輸入的有效性,有效的情況下會調用綁定到該UIInput組件的Converter對用戶輸入進行轉換。同時,跟UIOutput組件一樣,JSF會在[
Render Response:重畫畫面階段]調用Converter對UIInput進行顯示前的變換處理
2,對于
UIOutput組件:JSF會在[
Render Response:重畫畫面階段]調用綁定到該UIOutput組件的Converter對將要顯示的值進行變換。
JSF的生命周期:一個典型JSF請求分成以下6個階段:(http://www.lifevv.com/tenyo/doc/20070520012424461.html)
- Restore View Phase:重載視圖階段
- Apply Request Values Phase:應用請求值階段 這個階段主要做2件事:第一,把用戶提交的數據設置到組件中去;第二,把用戶事件(比如按下按鈕等)加到事件隊列。
- Process Validations Phase:數據檢查階段 這個階段主要做數據的合法性檢查,如果用戶輸入了非法數據,則在畫面上顯示相應的錯誤消息。
- Update Model Values Phase:更新模型值階段 把組件里的值設置到Model中去。
- Invoke Application Phase:用戶業務邏輯階段 主要處理用戶按鈕事件等,調用業務邏輯處理(action)。
- Render Response:重畫畫面階段 畫面描畫和展現。