繁体   English   中英

通过Spring Boot重用Hibernate-Validator中的域模型

[英]Reuse domain model in Hibernate-Validator with Spring Boot

我正在使用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;
}

情况是:

我想使用此域模型来执行登录和注册,也可能要执行其他操作,但是遇到一些麻烦。

  1. 在注册情况下,我需要验证所有属性,例如(姓名,年龄,电子邮件,密码)
  2. 但是在登录情况下,我只需要验证名称和密码即可。

是否可以仅使用同一域来做到这一点? 以及如何做?

谢谢。

您要查看的是验证组 这样,您可以为同一个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 注解 它具有一个属性groups ,可用于指定要用于验证的组。 它看起来像:

@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@Validated( Login.class ) User user) {
    ....
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM