validation数据库的电子邮件格式和唯一性

我正在创建一个JSF表单,我有一个电子邮件字段。 我需要validation电子邮件格式并检查数据库的唯一性。

我需要在最终用户输入电子邮件字段时检查这一点。 如果它存在于DB中,那么我们需要将字段颜色更改为红色,否则更改为绿色。 我想通过ajax执行此操作。

我在PHP中看到了一些例子,但我不清楚如何在JSF中做到这一点。

对于常规电子邮件格式validation,您可以使用

     

要对模糊执行validation,请添加

      

对于唯一的电子邮件validation,请根据其合同实施JSF Validator接口。

 @FacesValidator("uniqueEmailValidator") public class UniqueEmailValidator implements Validator { @Override public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException { if (value == null) { return; // Let required="true" handle, if any. } String email = (String) value; if (yourUserService.existEmail(email)) { throw new ValidatorException(new FacesMessage( FacesMessage.SEVERITY_ERROR, "Email is already in use.", null)); } } } 

并通过

       

要更改组件的样式,可以在stylestyleClass属性中使用EL。

       

你不一定需要jQuery。 当jQuery在客户端而不是服务器端运行时,它也会不那么健壮(你知道,最终用户可以100%控制在客户端运行的东西)。