[英]When exactly does the value conversion happen in JSF?
我咨詢了幾個權威人士,但是他們是真的互相矛盾,還是我誤解了他們,或者說有不止一次轉換? JSF的1.x和2.x版本之間是否存在差異?
此IBM帖子聲明轉換發生在Apply請求值階段 (階段2)。
BalusC 在這篇文章中說,默認轉換發生在流程驗證階段 (階段3)。
Oracle JEE6教程暗示轉換發生在更新模型值階段 (階段4),在此階段的描述中說:
如果本地數據無法轉換為bean屬性指定的類型。
另一方面,說明同一教程中階段的圖形顯示了從流程驗證階段和更新模型值階段出現的轉換錯誤。
以上所有帖子都指出,如果immediate
屬性設置為true,則在Apply請求階段處理所有轉換和驗證。 這意味着該階段的轉換不是默認行為。
謝謝
從UIInput的文檔 [強調我的]:
在請求處理生命周期的“ 應用請求值”階段期間,必須使用setSubmittedValue()存儲此組件的解碼值(通常但不一定是String),但尚未轉換 。 如果組件希望指示沒有提交特定值,則它可以不執行任何操作,或將提交的值設置為null。
默認情況下,在請求處理生命周期的Process Validators階段,提交的值將轉換為typesafe對象 ,如果驗證成功,則使用setValue()存儲為本地值。 但是,如果將immediate屬性設置為true,則此處理將在Apply Request Values階段結束時發生。
在請求處理生命周期的渲染響應階段,輸出轉換與UIOutput一樣。 JSF 1.x和2.x版本之間沒有區別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.