2012-10-23 62 views
1

我試圖調用validateLength在JSF(接縫的XHTML文件)JSF 1.2 /煤層2.2 - 驗證器被跳過時輸入它空

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

它適用於值,諸如文本長度513和1(即它顯示一個警告,但不是爲0)

它正在使用的輸入文本字段被設置爲required = false(以便它可以使用空字段的a4j支持,我必須顯示基於輸入)

我看到的問題是有一個助手類中的驗證器方法b如果輸入長度爲0(即,我什麼都不放,它適用於非空值),它會被忽略。

我在這裏也有一個NullableStringConverter,但是我注意到,只要該轉換器設置了空字符串的null值,驗證器就會被跳過。這裏是inputText的完整片段

<h:inputText id="linkNameInput" 
    value="#{someHelper.name}" 
    validator="#{someHelper.validateMethod}" 
    required="false"> 
     <f:validateLength minimum="2" maximum="512"/> 
     <f:converter converterId="NullableStringConverter" /> 
</h:inputText> 

我只想驗證一個驗證器中的空字符串的能力。

+0

http://stackoverflow.com/a/8327848/617373? – Daniel

回答

1

我只想驗證一個驗證器中的空字符串的能力。

這在JSF 1.x中是不可能的。這隻有在JSF 2.0(支持JSR303 Bean驗證支持)的情況下才有可能。

我不確定你爲什麼要驗證自定義驗證程序中的空字符串。在這裏你通常使用required="true"屬性。如果唯一的目標是更改所需的消息,則只需使用requiredMessage屬性。

<h:inputText ... required="true" requiredMessage="Please enter name" /> 
0

如前所述,不支持驗證JSF 1.2組件中的空輸入字符串。但是,您可以在表單提交中檢查支持bean中的空/空模型值,並添加映射到該特定輸入字段的FacesMessage。這將允許與服務器端組件特定的錯誤消息顯示(<h:message for="componentId" />)集成。

FacesContext.getCurrentInstance().addMessage("componentId", 
              facesMessageForComponent);