JSF 1.2 / Seam 2.2 - 当输入为空时跳过验证器

时间:2012-10-23 08:49:52

标签: jsf jboss seam jsf-1.2

我试图在JSF(接缝的xhtml文件)中调用validateLength

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

适用于文本长度为513和1的值(即显示警告,但不显示0)

正在使用它的输入文本设置为required = false(因此它可以使用a4j支持空字段,我必须根据输入显示预览)

我看到的问题是在辅助类中有一个验证器方法,但是当输入的长度为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>

我只想验证验证器中的空字符串。

2 个答案:

答案 0 :(得分:1)

  

我只想验证验证器中的空字符串。

这在JSF 1.x中是不可能的。这是自JSF 2.0以来唯一可行的(支持JSR303 Bean Validation支持)。

我不确定您为什么要验证自定义验证程序中的空字符串。在那里,您通常使用required="true"属性。如果唯一的目标是更改所需的消息,那么只需使用requiredMessage属性。

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

答案 1 :(得分:0)

如前所述,不支持验证JSF 1.2组件中的空输入String。但是,您可以在表单提交时检查辅助bean中的此null /空模型值,并添加映射到该特定输入字段的FacesMessage。这将允许与服务器端组件特定的错误消息显示(<h:message for="componentId" />)集成。

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