验证非必填字段

lam*_*eta 6 validation primefaces jsf-2

我有这些代码行来验证电子邮件地址:

<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>
Run Code Online (Sandbox Code Playgroud)

当我将电子邮件地址字段留空并提交表单时,它会给出验证错误.为什么JSf这样做?是不是应该只使用上面的代码验证电子邮件字段?我甚至尝试添加:

required="false" 
Run Code Online (Sandbox Code Playgroud)

仍然没有好处.有没有人对这个案子有任何想法?

Dan*_*iel 18

您的inputText值正在针对您进行验证<f:validateRegex pattern=".+@.+\.[a-zA-Z]+" />,如果其值无效,则会出现错误,因此您需要改进正则表达式以使其符合您的模式或接受空字符串...

所以包装它()并添加一个?应该做的工作

尝试

<f:validateRegex pattern="(.+@.+\.[a-zA-Z]+)?"/>
Run Code Online (Sandbox Code Playgroud)