spring boot + validate全局拦截验证

1、启动配置MethodValidationPostProcessor
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
2、添加全局异常处理流程
//添加全局异常处理流程,根据需要设置需要处理的异常,以MethodArgumentNotValidException为例,在自定义的GlobalExceptionHandler中添加

@ExceptionHandler(value= MethodArgumentNotValidException.class)
@ResponseBody
public Object MethodArgumentNotValidHandler(HttpServletRequest request,
                                            MethodArgumentNotValidException exception) throws Exception
{
    //按需重新封装需要返回的错误信息
    List invalidArguments = new ArrayList<>();
    //解析原错误信息,封装后返回,此处返回非法的字段名称,原始值,错误信息
    for (FieldError error : exception.getBindingResult().getFieldErrors()) {
        ValidateResult invalidArgument = new ValidateResult();
        invalidArgument.setValidateMessage(error.getDefaultMessage());
        invalidArgument.setField(error.getField());
        invalidArgument.setRejectedValue(error.getRejectedValue());
        invalidArguments.add(invalidArgument);
    }

    Result resultMsg = new Result(false, invalidArguments, MessageCode.VALIDATION_ERROR.ordinal());
    return resultMsg;
}

3、全局异常返回信息
@Data
public class ValidateResult {
private String field;
private Object rejectedValue;
private String validateMessage;
}
4、在方法的参数上增加@Valid
@Valid
public Result update(@RequestBody @Valid Class class){
5、在校验的字段上增加校验值
@Data
public class Class{

@Length(max = 2, message = "name长度最大值为2")
private String name;

}

你可能感兴趣的:(技术,spring,boot,全局异常)