JSR303 之 @Validated + @Valid 实现嵌
2020-06-19 本文已影响0人
炒面Z
1.名词定义解释
JSR303
- JSR是Java Specification Requests的缩写,意思是Java 规范提案
- JSR303 指 Bean Validation 1.0 (JSR 303)
注解 @Validated + @Valid
- @Valid 是标准JSR-303规范,由javax提供
- @Validated 由Spring Validation验证框架提供,是 Spring’s JSR-303规范,是标准JSR-303的一个变种
2.校验使用场景
对入参的数组对象的每个子元素对象作参数校验,实现对入参元素的嵌套校验
- 1.在控制器层,需要使用 @Validated 注解
- 2.在数组属性上使用 @Valid 注解
demo源码
@PostMapping(value = "/savePoints")
public Result savePoints(@Validated @RequestBody KidPointDto dto) {
return kidPointService.savePoints(dto);
}
@Data
public class KidPointDto implements Serializable {
private static final long serialVersionUID = -8000551611072121475L;
@NotNull(message = "课程ID不能为空")
private Long ccCourseId;
@Valid
@Size(min = 1, message = "数组至少需要一个元素")
private List<SinglePointModel> pointList;
}
@Data
public class SinglePointModel implements Serializable {
private static final long serialVersionUID = -5004183222932545560L;
@NotNull(message = "学员id不能为空")
private Long kidId;
@NotNull(message = "积分(金币)数不能为空")
@Range(min = 0, max = 1000, message = "积分(金币)数范围必须在0-1000之间")
private Integer points;
}