1.传递的参数是json类型或者以实体对象传递的
A. 在实体类的属性上添加校验注解
public class User {
@NotNull(message = "{the userName is not null}")
private Long userId;
private String userName;
//get/set方法省略
}
B.在controller层的方法的参数前面添加@Valid注解
public Result<Boolean> update(@RequestBody @Valid User user) throws Exception {
}
2.单个参数校验
A.controller层的方法里面,对应参数前面直接添加注解。
B. 并抛出异常,单独自定义一个统一异常处理器,对参数校验的一场进行处理。(统一异常处理参考上一篇博客)
public Result<List<User>> selectById(
@NotNull(message = "{validator.constraints.NotNull.userId}") @RequestParam("userId") Long userId)
throws Exception {
}
3.参数是对象,但是在不同的方法里,参数校验的需求不同。比如两个请求,一个请求需要对Id和name两个字段进行校验,而另一个方法只需要对id做校验。
传统方式:针对不同请求,单独对不同请求下的参数进行校验。
A.在实体类的属性校验注解中使用groups属性
public class User {
@NotNull(groups=ID.class,message = "{the userId is not null}")
private Long userId;
@NotBlack(groups=NAME.class,message = "{the userName is not null}")
private String userName;
//get/set方法省略
public interface NAME{};
public interface ID{};
}
B.在controller层中按照不同请求标注
@RequestMapping(value="testName")
public void testName(@Validated(NAME.class) User user) {
}
@RequestMapping(value="testNameandId")
public void testNameandId(@Validated({NAME.class,ID.class})
User user) {
}