我认为我的问题很简单,但我似乎无法克服它。
我正在为这样的电子邮件使用输入文本:
<h:outputLabel value="Mail:" for="mail" />
<p:inputText id="mail" value="#{UtilisateurBean.mail}"
title="Mail" validator="#{UtilisateursValidate.email}"
validatorMessage="ecrivez un mail valide">
<f:validateRegex
pattern="[\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]" />
<f:validateLength minimum="2" />
问题是它不支持 @ 之前的点字符,比如 nouraty.n@mail.com(gmail 通常就是这种情况)。我试过这样的东西:
pattern="[\w\.-]*[a-zA-Z0-9._%-]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]"
pattern="[\w\.-]*[a-zA-Z0-9\._%-]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]"
但没有运气。
任何人都可以为这个问题提出解决方案吗?
最佳答案
JSF 验证器按照它们在组件上声明的顺序执行,从组件 validator
中的那个开始。属性,如果有的话。你有一个 validator="#{UtilisateursValidate.email}"
.如果它针对不同的(和错误的)模式进行验证并抛出 ValidatorException
,那么您仍然会看到验证器消息。
删除或修复该验证器应该可以解决您的问题。
关于validation - 带有primefaces的电子邮件模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11649588/