@NotNull 注解中groups 的用法

原来:

@Data
public class User {
     
    @NotNull(message = "修改类ID不能为你空")
    private Integer id;

    @NotNull(message = "用户名称")
    private String name;

}
    @GetMapping("update")
    public Result update(@Valid User user) {
		System.out.println("测试@notNull注解");
        //验证用户操作省略
        return Result.suc();
    }

问题

现在是修改用户信息接口我们只需要判断ID不能为空,但是如果是新增的时候,是不需要用到ID的,修改又必须使用 ID,这种情况应该如何处理?
在NotNull注解里面配置group,需要验证的时候,就在controller参数注解中加上这个groups名称

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

    @NotNull(message = "ID不能为空",groups = {TestNotNull.class}) 
    private Integer id;
    @NotNull(message = "用户名不能为空")
    private String username;

}
  @GetMapping("update")
    public Result update(@Validated(value = {TestNotNull.class}) User user) {
        System.out.println("测试@notNull注解");
        //验证修改的时候,必须带上ID,新增的时候不需要ID,操作省略
        return Result.suc();
    }


  @GetMapping("add")
    public Result add(@Validated User user) {
        System.out.println("测试@notNull注解");
        //验证修改的时候,必须带上ID,新增的时候不需要ID,操作省略
        return Result.suc();
    }

注意: 

  • 如果是    @NotNull(message = "用户名不能为空") 没有 指定分组,那么在Controller在分组的情况下是不生效的
  • 因为groups需要一个接口的类型,为此就必须创建一个接口类型。但是此接口不需要去实现 

@NotNull 注解中groups 的用法_第1张图片 

你可能感兴趣的:(java,前端,服务器)