JSF控件的immediate屬性和頁面生命周期


JSF中的控件基本都有immediate屬性,對於這個屬性的使用總結如下,更詳細內容可參考Oracle官方文檔。

 

1,為了更好的理解immediate屬性,先看一下JSF頁面的生命周期:

JSF頁面的生命周期有六個,可參考下面的圖;ADF頁面是建立在JSF頁面基礎上的,它的生命周期包括JSF頁面的六個生命周期外,還包括Init Context and Prepare Model、Validate Model Updates、Metadata Commit和Prepare Render幾個階段。JSPX頁面具有JSF頁面的生命周期還是具有ADF頁面的生命周期,要看頁面是在faces-config.xml還是 adfc-config.xml中管理的。對於生命周期的詳細內容可參考Oracle官方的ADF開發手冊。

 

2,控件的immediate屬性與控件(component)的轉換校驗邏輯關系緊密。通常,頁面控件中的值在Process Validations階段進行轉換校驗(可參考<af:inputListOfValues>的API);當設置一個控件的immediate屬性為true的時候,控件中的值將會提前在Apply Request Values階段進行轉換校驗。
1)    對於輸入控件,immediate為true的時候,該控件的輸入值的校驗會比immediate為false的早,可以理解為立即執行校驗。當該控件上的校驗失敗的時候,該控件所在頁面的生命周期直接跳轉到Render Response階段,並且所有immediate為false的控件都不執行校驗操作;如果控件上的校驗成功,並且控件的newValue與oldValue不同,就會在Apply Request Values階段觸發一個ValueChangeEvent,而不是常規模式下的Process Validations階段,並且這個ValueChangeEvent的執行也早於這個控件上的其他ActionListener。
2)    對於命令控件,如果immediate為true,頁面的生命周期直接跳轉到Render Response階段,忽略掉validation和model update等階段。經常使用的是Cancel按鈕。


Reference:
Oracle Fusion Middleware 11g: Build Applications with ADF I(Volume I • Student Guide)(D53979GC11)
http://download.oracle.com/docs/cd/E12839_01/apirefs.1111/e12419/tagdoc/af_inputListOfValues.html
Fusion Developer's Guide for Oracle Application Development

 

轉載自:http://blog.csdn.net/luyushuang/article/details/6254889

 

程序員的基礎教程:菜鳥程序員


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM