1

我正在尝试在 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>

我希望能够在验证器中验证空字符串。

4

2 回答 2

1

我希望能够在验证器中验证空字符串。

这在 JSF 1.x 中是不可能的。这只有在 JSF 2.0 之后才有可能(支持 JSR303 Bean Validation 支持)。

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

<h:inputText ... required="true" requiredMessage="Please enter name" />
于 2012-10-23T10:56:24.040 回答
0

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

FacesContext.getCurrentInstance().addMessage("componentId",
                                             facesMessageForComponent);
于 2012-12-10T01:46:12.457 回答