我今天在閱讀關於JSF生命週期的article。JSF - 關於生命週期的問題
我有一些麻煩明白以下幾點:
1 - 第3階段:處理檢驗 - 這是在其中該部件可以驗證它們的新值的相位。 如果新值有效且與先前值不同,則會創建值更改事件並將其放入隊列中。因此,在我們的示例中,如果用戶在提交表單之前更改名稱,則ValueChangeEvent對象將由名稱文本框對應的UIInput組件對象創建,並在此階段末尾將其排隊以供處理。。這是valueChangeInput方法在支持bean被調用。
JSF如何知道舊值與新值的區別?視圖對象的實例是2?前一個(請求前的)和新的? (它們具有上一個進程添加的FacesContext上的值,應用請求值)
2 - 階段5:調用應用程序 - 一旦請求的所有值已成功設置爲支持bean,應用請求值階段將被處理。 在我們的例子中,提交按鈕的操作方法。
因此,它直接發送FacesContext的實例到最後階段(渲染響應),將UI元素(及其值)轉換爲Html。那麼,什麼時候(bean的)getter方法被調用?
乾杯
關於第一點的答案:好的,它從bean中獲取值。但是,如果bean是請求作用域,那麼當我創建視圖時,所有的值都將爲空。 (並且應該調用valueChange處理程序?)。關於第二點:我不明白。因此,它將視圖實例(FacesContext)中的值設置爲生命週期的第一個點,並且如果驗證(或轉換)不發生錯誤,它將從bean中獲取相同的值?聲音bizzarre,這是我說我不明白:)我今天下午看了你的文章......但仍然不清楚。我需要再練習一次...... – markzzz 2010-11-27 20:26:43