當我嘗試提交一個JSF表單上其屬性指與Bean驗證註解的實體,那麼JSF顯示豆驗證錯誤時,Bean驗證限制被違反。JSF如何捕獲/顯示bean驗證約束違規錯誤?
我在想:
- 當實體驗證?
- 它是如何處理/聯豆驗證錯誤的看法?
當我嘗試提交一個JSF表單上其屬性指與Bean驗證註解的實體,那麼JSF顯示豆驗證錯誤時,Bean驗證限制被違反。JSF如何捕獲/顯示bean驗證約束違規錯誤?
我在想:
何時驗證實體?
在JSF驗證階段,這是JSF生命週期的第三階段中,收集和將所述提交的值(第二階段)之間,並更新所述模型的值(第四相)英寸
它是如何處理/聯豆驗證錯誤的看法?
任何驗證器(和轉換器)異常消息被接通/存儲在由FacesContext#addMessage()
加到FacesContext
一個FacesMessage
。所有這些消息又在其被綁定到特定輸入組件
<input id="foo" value="#{bean.foo}" />
<h:message for="foo" />
<input id="bar" value="#{bean.bar}" />
<h:message for="bar" />
或全部一起在通用<h:messages/>
部件
<h:messages />
所有缺少驗證消息將被記錄或者一個<h:message>
組分單獨顯示到標準輸出,或者當您在開發項目階段運行時,在開發階段警告消息會自動添加到視圖中。
確認後發生的請求值被提交到服務器,但它們應用到模型bean之前。這確保了模型的完整性。在這個過程中有一個數據類型轉換,如果JSF標準驗證器和轉換器不足以驗證你的數據類型,你可以插入你自己的數據類型。本教程描述了JSF中提供的standard validators and converters。
編寫自定義的驗證,是指O'Reilly's book on JSF。
請注意,OP在談論JSR303 Bean驗證(這些標註像'@ NotNull','@ Pattern','@ Min','@ Max',等等),它也有自己創建自定義的驗證方式。這與JSF自己的驗證器無關。 – BalusC