涉及到的注解: @Validated 和 @Valid
使用的到类:
Class A
public class A {
@NotEmpty(message="name can't be empty")
private String name;
@NotEmpty(message="id can't be empty")
private Long id;
}
Class B
public class B {
@NotEmpty(message = "aList can't be empty")
private List<@Valid A> aList;
}
Class C
public class C {
@NotNull(message = "a can't be empty")
@Valid
private A a;
}
一. 参数直接是List
(1). 首先在Controller顶部加上注解 @Validated
@Validated
@RestController
@RequestMapping("/xxx/")
public class XXXController {}
(2). 在Controller接口定义的对应的List参数中增加 @Valid 注解
@PostMapping("yyy")
public Result<Void> testValidator(@Valid @RequestBody List<A> params){}
二.参数是对象, 对象里面嵌套List
(1). 首先在Controller顶部加上注解 @Validated
@Validated
@RestController
@RequestMapping("/xxx/")
public class XXXController {}
(2). 在Controller接口定义的对应的参数中增加 @Validated注解,并且增加 @Valid 注解 (因为@Valid可以起到嵌套校验的作用)
@PostMapping("yyy")
public Result<Void> testValidator(@Valid @Validated @RequestBody B b){}
(3). 在实体的list属性上增加 @Valid注解
@NotEmpty(message = "aList can't be empty")
private List<@Valid A> aList;
// 或者
@NotEmpty(message = "aList can't be empty")
@Valid
private List<A> aList;
三.参数是对象, 对象里面嵌套对象
(1). 首先在Controller顶部加上注解 @Validated
@Validated
@RestController
@RequestMapping("/xxx/")
public class XXXController {}
(2). 在Controller接口定义的对应的参数中增加 @Validated注解,并且增加 @Valid 注解 (因为@Valid可以起到嵌套校验的作用)
@PostMapping("yyy")
public Result<Void> testValidator(@Valid @Validated @RequestBody C c){}
(3). 在实体的对象属性上增加 @Valid注解
@NotNull(message = "a can't be empty")
@Valid
private A a;
Tip:@Valid 的使用和 @Validated 的分组功能不冲突,正常使用 group 属性集合
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。