• validate 使用


    使用步骤

    再controller层中方法对象添加@valid @RequestBody

    再验证实体类中添加@Data 其中属性不能大写开头

    Springboot配置捕捉validate校验参数异常统一处理并自定义validate校验返回格式

    1、添加一个异常处理类
    @ControllerAdvice
    public class WebExceptionHandler {

    /**
    * 处理请求参数格式错误 @RequestBody上使用@Valid 实体上使用@NotNull等,验证失败后抛出的异常是MethodArgumentNotValidException异常
    */
    @ExceptionHandler(MethodArgumentNotValidException.class)
    @ResponseBody
    public JsonData MethodArgumentNotValidExceptionHandler(MethodArgumentNotValidException e) {
    String message = e.getBindingResult().getAllErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining());
    return JsonData.buildCodeAndMsg(BASE_VAILD_EXCEPTION.getCode(),message);
    }

    /**
    * 处理Get请求中 使用@Valid 验证路径中请求实体校验失败后抛出的异常
    */
    @ExceptionHandler(BindException.class)
    @ResponseBody
    public JsonData BindExceptionHandler(BindException e) {
    String message = e.getBindingResult().getAllErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining());
    return JsonData.buildCodeAndMsg(BASE_VAILD_EXCEPTION.getCode(),message);
    }

    /**
    * 处理请求参数格式错误 @RequestParam上validate失败后抛出的异常是ConstraintViolationException
    */
    @ExceptionHandler(ConstraintViolationException.class)
    @ResponseBody
    public JsonData ConstraintViolationExceptionHandler(ConstraintViolationException e) {
    String message = e.getConstraintViolations().stream().map(ConstraintViolation::getMessage).collect(Collectors.joining());
    return JsonData.buildCodeAndMsg(BASE_VAILD_EXCEPTION.getCode(),message);
    }

    /**
    * 参数格式异常
    */
    @ExceptionHandler(HttpMessageNotReadableException.class)
    @ResponseBody
    public JsonData HttpMessageNotReadableExceptionHandler(HttpMessageNotReadableException e) {
    return JsonData.buildCodeAndMsg(BASE_VAILD_EXCEPTION.getCode(),"参数格式异常");
    }


    }

    二、配置校验快速失败:只要出现校验失败的情况,就结束校验,不再进行后续的校验

    /**
    * validate参数校验默认的是一个参数校验失败后,还会继续校验后面的参数
    * 通过这个配置改成:校验参数时只要出现校验失败的情况,就立即抛出对应的异常,结束校验,不再进行后续的校验
    */
    @Configuration
    public class WebConfig {

    @Bean
    public Validator validator() {
    ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)
    .configure()
    //failFast的意思只要出现校验失败的情况,就立即结束校验,不再进行后续的校验。
    .failFast(true)
    .buildValidatorFactory();
    return validatorFactory.getValidator();
    }

    @Bean
    public MethodValidationPostProcessor methodValidationPostProcessor() {
    MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor();
    methodValidationPostProcessor.setValidator(validator());
    return methodValidationPostProcessor;
    }

    }

  • 相关阅读:
    android 本地通知
    android qq开合表
    android 获取经纬度
    android读取通讯录和使用系统通讯录
    android Dialog官方demo
    android Listview分页
    android 瀑布流
    2020-08-16:数据任务是怎么优化的?(数据倾斜,参数相关调节)
    2020-08-15:什么情况下数据任务需要优化?
    2020-08-14:数据任务的执行引擎用的哪些?
  • 原文地址:https://www.cnblogs.com/tflike/p/15964403.html
Copyright © 2020-2023  润新知