1

我有一个带有可选字段的注册表单,但如果您输入任何值,它应该超过 2 个字符。如果用户将该字段留空,如何跳过验证?

 <h:inputText id ="fooid" maxlength="50" tabindex="4" value="#{registrationBean.foo}"  validatorMessage="Please enter two or more characters">
 <f:validateRegex pattern="^[A-Za-z-_./\s]{2,50}$"/>
 <f:ajax event="blur" render="fooPanel" />
 </h:inputText>

任何帮助,将不胜感激。

4

1 回答 1

7

如果您添加以下上下文参数,它将按预期工作:

<context-param>
    <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
    <param-value>true</param-value>
</context-param>

这将告诉 JSF 将提交的空字符串值解释为null. 如果值为null,则只会required="true"触发验证器,而不会触发其他验证器。另一个优点是,当最终用户没有填写输入时,它可以让您的模型没有杂乱的空字符串。

如果由于某种原因这不是一个选项,例如,当您的模型错误地依赖空字符串时,那么您最好的选择是在正则表达式中检查空字符串:

 <f:validateRegex pattern="^$|^[A-Za-z-_./\s]{2,50}$" />
于 2013-08-28T12:25:27.450 回答