spring @Validated 分组校验

转载自:https://juejin.im/post/5cb46bdb5188251aca7342b9

分组校验

public class ValidationDemo {
    private String id;

    @Length(min = 2, max = 6, message = "用户名长度要求在{min}-{max}之间")
    @NotNull(message = "用户名不可为空")
    private String userName;

    // 表示分组为Adult时使用该校验规则
    @Email(message = "邮箱格式错误")
    @NotBlank(message = "邮箱不可为空", groups = {ValidationDemo.Adult.class})
    private String email;

    @Past(message = "出生日期错误")
    private Date birthDay;

    @Min(value = 18, message = "年龄错误")
    @Max(value = 80, message = "年龄错误")
    private Integer age;

    @Range(min = 0, max = 1, message = "性别选择错误")
    private Integer sex;

    // 添加两个分组
    public interface Adult {
    }

    public interface Minor {
    }
}

测试一下

// 这里将分组设置为Minor,目的是不校验邮箱字段
@RequestMapping(value = "validation", method = RequestMethod.POST)
public JsonResult validation(@Validated({ValidationDemo.Adult.class}) @RequestBody ValidationDemo demo) {
    return null;
}

RequestBody:
{
  "age": 0,
  "birthDay": "2019-04-14T10:39:08.501Z",
  "email": "",
  "id": "string",
  "sex": 0,
  "userName": "string"
}
Response:
{
  "code": 1,
  "msg": "[\"邮箱不可为空\"]",
  "total": 0,
  "totalpage": 0
}
RequestBody:
{
  "age": 0,
  "birthDay": "2019-04-14T10:39:08.501Z",
  "email": "",
  "id": "string",
  "sex": 0,
  "userName": "string"
}
Response:
{
  "code": 0,
  "data": [
    {}
  ],
  "extra": "string",
  "msg": "string",
  "result": {},
  "total": 0,
  "totalpage": 0
}

由此可见,分组验证已经生效

你可能感兴趣的:(Spring相关)