2014-10-27 19 views
0

我有很多代碼需要驗證標準。
像這樣JSF:如何替換標準所需驗證器

<h:inputText required="true" requiredMessage="it is required!"/> 

現在,我需要改變的RequiredValidator行爲:把錯誤信息的情況下,但不要打斷循環。可能會做更多的事情。

我試圖添加自定義驗證器與相同的ID,但它沒有奏效。

<validator> 
    <validator-id>javax.faces.Required</validator-id> 
    <validator-class>my.RequiredValidator</validator-class> 
</validator> 

這可能嗎?

回答

0

空字段未提交給驗證器。我找不到匹配的文檔,但我測試了環境並請看Get empty strings from <h:inputText> go through validation

這個問題也處理一個空字符串輸入和BalusC說:

JSF 1.x並默認情況下不火對空字段的驗證。

好吧,它是關於JSF 1.X,但它似乎沒有改變。

驗證器將中斷請求,但那不是你想要的。那麼它可能是一種解決方法,可以根據需要使用setter方法?

從您的inputText中收集required屬性,並在setter中爲您的textInput添加FacesMessage。假定賦值爲#{myBean.description},二傳手可能如下所示:

public void setDescription(String value) { 
    String _tmp = value.trim(); 
    if (_tmp.equals("")) { 
     FacesContext ctx = FacesContext.getCurrentInstance(); 
     ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR 
      , "Error:", "Input must not be empty")); 
     this.description = null; 
     return; 
    } 
    this.description = _tmp; 
}