2012-10-23 33 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);