我有一个带有可选字段的注册表单,但如果输入任何值,则应该超过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>
任何帮助都将不胜感激。
答案 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}$" />