Mah*_*leh 2 validation jsf java-ee bean-validation jsf-2
我有一个电子邮件字段,我想验证它是有效的电子邮件,并验证它在数据库中不存在,所以我使用有效的电子邮件模式来自bean中的hibernate的@Email:
@NotBlank(message = "{email.required}")
@Email(message = "{invalid.email}")
@Size(max = 25, message = "{long.value}")
Run Code Online (Sandbox Code Playgroud)
并在jsf页面中:
<f:validator binding="#{emailExistValidator}" />
Run Code Online (Sandbox Code Playgroud)
我的问题:
1-首先发生什么,面部验证器或bean验证?
JSF转换和验证将首先按照在组件上声明的顺序运行,首先是required.如果其中任何一个失败,则完全跳过JSF验证的剩余部分和所有bean验证,否则执行所有bean验证.
2-你如何看待bean验证和FacesValidator之间的这种混合,这是不好的做法,如果是这样你有什么建议?
很难回答.它完全取决于验证器的功能要求和目的,以及验证与模型或视图的紧密联系.
如果验证需要在每次设置模型属性时运行(因此,它与模型紧密相关),那么bean验证将是首选.但是,如果验证只需要运行一次,例如在注册期间(因此,它与特定视图密切相关),那么JSF验证将是首选.
例如,如果您正在检查电子邮件语法模式,那么bean验证会更有意义,例如:
@Pattern(regexp = "([^.@]+)(\\.[^.@]+)*@([^.@]+\\.)+([^.@]+)", message = "Email is not in valid format")
private String email;
Run Code Online (Sandbox Code Playgroud)
如果您正在检查存在于数据库中的电子邮件,那么JSF验证器会更有意义,因为您不希望它在每个属性集上不必要地执行.数据库调用本身并不便宜.
同样,这是主观的.了解最符合业务要求的内容.例如,您可能需要在每个属性集上验证它.
| 归档时间: |
|
| 查看次数: |
1858 次 |
| 最近记录: |