jsf中的电子邮件唯一性验证

Email uniquness validate in jsf

这是我的 JSF 表单电子邮件代码部分:

(Registration.xhtml)

<p:inputText id="email" required="true" label="Email" size="20" value="#{registrationBean.email}">
<f:validateRegex pattern="([^.@]+)(\.[^.@]+)*@([^.@]+\.)+([^.@]+)"/>
<f:validator id="uniqueEmailValidator"/>
</p:inputText>
 <h:message for="email"/>

这是我的验证器 class:

@FacesValidator("uniqueEmailValidator")
public class UniqueEmailValidator implements Validator {

    @Override
    public void validate(FacesContext fc, UIComponent uic, Object value) throws ValidatorException {
        if (value == null) {
            return;
        }
        String email = (String) value;
        CustomerService cService = new CustomerService();
        if (!cService.exists(email)) {
            throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "mail is already in use.", "error"));
        }
      }
   }

我在 运行 应用程序时遇到此错误:

/Registration.xhtml @49,73 <f:validator> A validator id was not specified. Typically the validator id is set in the constructor ValidateHandler(ValidatorConfig)

在您的 f:validator 标签中,将 "id" 更改为 "validatorId"

<f:validator validatorId="uniqueEmailValidator"/>