我有这些代码行来验证电子邮件地址:
<h:outputText value="#{labels.eMail}: " />
<p:inputText size="30" maxlength="50" validatorMessage="Please provide a valid e-mail address" value="#{personelView.eMail}">
<f:validateRegex pattern=".+@.+\.[a-zA-Z]+" />
</p:inputText>
当我将电子邮件地址字段留空并提交表单时,它会给出验证错误。为什么JSf这样做?是不是应该只使用上面的代码验证电子邮件字段?我甚至尝试添加:
required="false"
仍然没有好处。有没有人对这个案子有任何想法?
答案 0 :(得分:16)
您的inputText
值正在针对您的<f:validateRegex pattern=".+@.+\.[a-zA-Z]+" />
进行验证,如果其值无效,则会出现错误,因此您需要改进正则表达式以使其符合您的模式或接受空字符串。
所以用()
包装并添加?
应该可以完成工作
尝试
<f:validateRegex pattern="(.+@.+\.[a-zA-Z]+)?"/>