对于普通的对象参数校验,那很容易,直接在需要校验的属性上加上@NotNull、@NotBlank等注解即可。比如:
public class Dog{
//一堆校验属性
}
然后在做参数使用时,用@Validated注解即可
public AjaxResult<JsonNode> saveOrUpdate(@RequestBody @Validated Dog dog) throws Exception {
}
但是如果参数是对象组成的list,那这么做是无效的。这时的解决办法有两种:
1)在项目里添加一个ValidList类,此类课直接使用,无需改动
public class ValidList<E> implements List<E> {
@Valid
@Size(min = 1, message = "集合不能为空")
@NotNull(message = "集合不能为NULL")
private List<E> list = new ArrayList<E>(); //这几个校验是对list整体,比如是否为空集合
@Override
public int size() {
return list.size();
}
/*
* 省略一堆
*/
之后在校验时只要将接口方法参数中的List改成ValidList即可:
public AjaxResult<JsonNode> saveFixedConfig(@RequestBody @Validated ValidList<Dog> dogs) {
}
2)新建一个类,把List作为成员变量, 然后用@Valid注解在List上。
@Data
public class DogList {
@Valid
private List<Dog> dogs;
}
然后使用时和之前一样即可
public AjaxResult<JsonNode> saveOrUpdate(@RequestBody @Validated DogList dogList) {
}