欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

@NotNull 注解中groups 的用法

程序员文章站 2022-12-04 14:30:44
原来:@Datapublic class User { private Integer id; @NotNull(message = "用户名不能为空") private String username; @NotNull(message = "密码不能为空") private String password;} @GetMapping("login") public Result login(@Valid User user) {...

原来:

@Data
public class User {

    private Integer id;
    @NotNull(message = "用户名不能为空")
    private String username;
    @NotNull(message = "密码不能为空")
    private String password;
}
    @GetMapping("login")
    public Result login(@Valid User user) {
		System.out.println("测试@notNull注解");
        //验证密码操作省略
        return Result.suc();
    }

问题

现在是登录接口我们只需要判断username和password,如果是别的接口也是用User类接收的,但是username和password可以为空怎么办?
在NotNull注解里面配置group,需要验证的时候,就在controller参数注解中加上这个groups名称

  1. 修改User类,配置了一下username内的groups为TestNotNull.class,groups里面的class需要为接口,可以用service的接口,也可以重新创建
  2. controller中,没有使用@Valid注解了,而是要使用@Validated,里面value代表的是,在User类里面@NotNull注解里面配置了groups里面有TestNotNull.class的字段判断会生效
    那么当前配置的话,就只会判断username是否为空,而password因为没有配置同样的groups属性,所以不会生效
@Data
public class User {

    private Integer id;
    @NotNull(message = "用户名不能为空",groups = {TestNotNull.class})
    private String username;
    @NotNull(message = "密码不能为空")
    private String password;
}
  @GetMapping("test")
    public Result test(@Validated(value = {TestNotNull.class}) User user) {
        System.out.println("测试@notNull注解");
        //验证密码操作省略
        return Result.suc();
    }

参考https://blog.csdn.net/weixin_44906271/article/details/105844930?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~sobaiduend~default-3-105844930.nonecase&utm_term=notnull%E6%B3%A8%E8%A7%A3groups&spm=1000.2123.3001.4430

本文地址:https://blog.csdn.net/xc_nostalgia/article/details/109644468

相关标签: java