@Validated注解不生效问题、如何使用

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.jar

2、将@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 

可以实现三个方面的功能:

  1. 全局异常处理
  2. 全局数据绑定
  3. 全局数据预处理
@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版权协议,转载请附上原文出处链接和本声明。