1、需要引入的包(缺少其中一个包,项目会报错,或者validate注解不生效)
hibernate-validator-6.0.14.Final.jar
jboss-logging-3.3.2.Final.jar
validation-api-2.0.1.Final.jar
classmate-1.4.0.jar2、将@Validated打在controller中需要验证的实体类前面
@PostMapping("/add")
@ResponseBody
public AjaxResult addSave(@Validated SysDept dept){
}3、在具体实体类中定义字段的验证规则(这里注解可以放在字段上,或者是get方法上,放在set方法上,会报错)
private String deptName;
@NotBlank(message = "部门名称不能为空")
@Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符")
public String getDeptName(){
return deptName;
}4、数据格式校验,对其错误进行处理(全局异常处理),不进行处理,会直接报400错误
@ControllerAdvice
可以实现三个方面的功能:
- 全局异常处理
- 全局数据绑定
- 全局数据预处理
@RestControllerAdvice
public class GlobalExceptionHandler{
@ExceptionHandler(BindException.class)
public ApiResult validatedBindException(BindException e){
log.error(e.getMessage(), e);
String message = e.getAllErrors().get(0).getDefaultMessage();
return ApiResult .error(message);
}
}在controller中的方法中进行单个参数校验注意事项
1、controller类上打上注解@Validated
2、方法参数上给出格式如:
public Result method(@NotNull @RequestParam("id") Long id) {3、其中@RequestParam("id")必须加,否则验证无效
版权声明:本文为liufang_king原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。