首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Spring的Hibernate-Validator重用域模型

基于Spring的Hibernate-Validator重用域模型
EN

Stack Overflow用户
提问于 2018-11-09 00:54:48
回答 1查看 229关注 0票数 0

我正在使用Hibernate Validator(包含在SpringBoot starter中)学习SpringBoot,我想知道如何在不同的情况下重用相同的域,例如

User.java

代码语言:javascript
复制
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. 但在登录情况下,我只需要验证名称和密码。

是否有可能做到这一点,只使用相同的领域?那怎么做呢?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-11-09 08:53:30

您要研究的是验证组。通过这种方式,您可以为同一个bean构建一组约束,然后在不同的情况下使用不同的组进行验证。在您的特殊情况下,您可能有如下内容:

公共类用户{

代码语言:javascript
复制
@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;

}

然后,通过将RegisterLogin作为一个组进行验证,您将只对那些具有相应组的约束执行检查。

如何在春天通过这些团体?你应该看看@Validated 注解。它有一个属性groups,您可以使用它来指定用于验证的组。它看起来应该是:

代码语言:javascript
复制
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@Validated( Login.class ) User user) {
    ....
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53218330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档