2013-02-22 23 views
0

我有一個<p:dataTable editable="true">含有<p:inputText><f:validateLength/>
我的問題是,我要處理這個<p:inputText>的驗證錯誤,如果用戶進入值長度超過最大值<f:validateLength/>
如果<p:inputText>在數據表中並不重要如果它是在一個簡單的形式和具有相同的驗證我怎麼處理這個驗證錯誤在我的bean做一定的業務
我試過
如何處理驗證錯誤(爲p:dataTable中),而這樣做的AJAX命令

FacesContext context = FacesContext.getCurrentInstance(); 
Iterator<FacesMessage> messages = context.getMessages(); 

,但我得到的消息做什麼用
和我也嘗試

FacesContext context = FacesContext.getCurrentInstance(); 
boolean validationError = context.isValidationFailed(); 

我也閱讀文檔FacesContext#isValidationFailed
,並用它
它沒有對如何任何新的細節,但它總是在情況下,驗證返回false成功或失敗
我使用它錯了還是我失去了一些東西有此功能

回答

0

f:validateLength檢查您輸入字段的長度取決於maximumminimum屬性添加到標籤,如:

<f:validateLength maximum="5" minimum="2"/> 

由於這是JSF內置的驗證,你會得到,如果你添加一個p:messageh:message標記爲您的組件或全球整個頁面時顯示的標準錯誤信息(你可以改變的一個默認的錯誤信息如果你想)。

對於自定義驗證,您應該採用validator屬性p:inputText,並將其綁定到支持bean中的驗證器方法。然後你可以驗證你喜歡的任何東西。

+0

我知道這是一個JSF內置的驗證器 但我的問題是我可以處理這個驗證錯誤,或者你的意思是隻有自己的驗證器完成可以處理 – primeFaceUser 2013-02-22 07:21:08

+0

如果你想在ajax動作方法中處理它,它爲時已晚,因爲驗證在JSF週期中較早發生。 – 2013-02-22 07:31:10

+0

我想處理JSF內置驗證器的驗證錯誤是否可用,以及爲什麼它遲到,並且如果具有事件onBlur上的Ajax,它會給inputText指示紅色指示 – primeFaceUser 2013-02-22 07:46:43

0

實現的最佳方式是創建一個自定義驗證器並從組件調用它。由於您正在傳遞組件中的標籤,因此您可以在驗證程序中添加諸如{0} XXXXXXXXXXXXX的消息。通過這個你可以爲不同的組件提供不同的錯誤信息。 而且您可以在屬性文件中配置錯誤消息並在驗證器類中讀取。

希望這是有幫助的。

+0

我需要的是知道天氣發生驗證錯誤或不在我的託管bean,以便我可以做我自己的生意 – primeFaceUser 2013-02-22 12:26:38

+0

假設我有一個表,並在這些表中有一個驗證失敗,雖然我有一個添加按鈕它將一個對象添加到列表中,並且在驗證失敗的情況下更新數據表在前一行中添加按鈕正常執行,就好像沒有驗證失敗一樣,所以我想知道在前一行中驗證失敗了,所以我可以停止添加按鈕的操作 – primeFaceUser 2013-02-22 12:29:04

+0

@primeFaceUser:當您使用自定義驗證器時:(1)根據JSF LifeCycl e當validtion階段失敗時,它使用錯誤消息呈現響應,並且不更新具有更新值的支持bean對象。所以在後臺bean中不可能知道驗證失敗的地方。 – arunsankarkk 2013-02-22 14:08:45