6-11 集成Validation做参数校验

Posted 孤注一掷 、

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6-11 集成Validation做参数校验相关的知识,希望对你有一定的参考价值。

对电子书查询和保存做参数校验

集成spring-boot-starter-validation

对保存接口和查询接口增加参数校验

校验不通过时,前端弹出错误提示

首先pom.xml中添加内置依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

修改:

测试结果会有很多日志信息:

下面新增控制器异常处理类:

/**
 * 统一异常处理、数据预处理等
 */
@ControllerAdvice
public class ControllerExceptionHandler 

    private static final Logger LOG = LoggerFactory.getLogger(ControllerExceptionHandler.class);

    /**
     * 校验异常统一处理
     * @param e
     * @return
     */
    @ExceptionHandler(value = BindException.class)
    @ResponseBody
    public CommonResp validExceptionHandler(BindException e) 
        CommonResp commonResp = new CommonResp();
        LOG.warn("参数校验失败:", e.getBindingResult().getAllErrors().get(0).getDefaultMessage());
        commonResp.setSuccess(false);
        commonResp.setMessage(e.getBindingResult().getAllErrors().get(0).getDefaultMessage());
        return commonResp;
    

这个类叫 统一异常处理类。

@controllerAdvice 可以对controller做一些统一的异常处理,或者是数据的预处理。

@ExceptionHandler 可以对BindException做一个统一的异常处理,这里是有针对性的,对校验框架做拦截,当出现异常的时候会进入下面的方法。首先把错误日志打印出来,然后构造一个CommonResp,模拟我们的业务代码,设置为false,表示这段业务失败了,最后返回出去。

这个类会被springboot扫描到。

测试结果:

 然后修改前端:引入消息提示框,修改页面大小为1001。

 应用消息框:

结果:

 

以上是关于6-11 集成Validation做参数校验的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot Validation参数校验 详解自定义注解规则和分组校验

Java参数验证Bean Validation 框架

SpringBoot开发秘籍 - 集成参数校验及高阶技巧

Spring功能介绍SpringMVC集成Java Bean Validation实现参数检验功

validation校验

自定义validation注解:解决动态多字段联动校验问题