我正在使用Hibernate Validator(包含在Spring-boot-starter-web中)学习SpringBoot,我想知道如何在不同情况下重用同一域
User.java
public class User {
@NotBlank(message = "username could not be empty ")
private String name;
@Max(120)
private int age;
@Range(min = 8, max = 20)
private String password;
@Email
private String email;
}
情况是:
我想使用该域模型来执行登录和注册,也许还有其他事情,但是遇到了一些麻烦。
是否可以仅使用同一域来执行此操作?以及如何做到?
谢谢。
答案 0 :(得分:0)
您要查看的是validation groups。这样,您可以为同一个bean构建约束集,然后在不同情况下使用不同的组进行验证。在您的特定情况下,您可能会遇到类似这样的情况:
公共类用户{
@NotBlank(message = "username could not be empty ", groups = {Register.class})
private String name;
@Range(min = 8, max = 20, groups = {Register.class, Login.class})
private String password;
@Email(groups = {Register.class, Login.class})
private String email;
}
,然后通过将Register
或Login
作为一个组传递以进行验证,您将只对具有相应组的约束进行检查。
如何在春季通过这些团体?您应该看看@Validated
annotation。它具有属性groups
,可用于指定要用于验证的组。看起来像这样:
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@Validated( Login.class ) User user) {
....
}