JSF中具有最小长度验证的可选字段

时间:2013-08-28 10:14:41

标签: ajax validation jsf facelets

我有一个带有可选字段的注册表单,但如果输入任何值,则应该超过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>

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:6)

如果添加以下上下文参数,它的工作原理如下:

<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}$" />