还会不绝校验后头的参数

发布日期:2024-06-26 11:04    点击次数:190


还会不绝校验后头的参数

一、自界说修改validate校验复返秩序

@Valid ,@NotBlank,@NotNull是比拟常用的参数校验注解

然而validate参数校验失败后,复返的json数据可能并不是我们最终念念要的,下图即是校验失败后它默许复返的数据

图片

一般情况下,我们可能只需要图中标红的阿谁教导信息就OK了

那怎么改它的复返数据呢?

唯一添加一个格外惩处类就行了

/** * validate校验 格外长入捕捉惩处类 */@ControllerAdvicepublic 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参数校验默许的是一个参数校验失败后, 浙江丝维纺织有限公司还会不绝校验后头的参数, 揭阳市顺星不锈钢实业有限公司如下图,企业-航雅骏坚果有限公司它会复返多个信息

图片

然而骨子情况一般是唯一有一个参数校验失败了,大衣就收尾复返。那怎么改成念念要的这么呢?

很简易,亦然加一个竖立类就好了(然而有的版块是不奏凯的)

/** * validate参数校验默许的是一个参数校验失败后,还会不绝校验后头的参数 * 通过这个竖立改成:校验参数时唯一出现校验失败的情况,就立即抛出对应的格外,收尾校验,不再进行后续的校验 */@Configurationpublic 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;    }}

竖立好后,重启形势,看下效劳

图片

 不错看到就只复返了一条锻练失败的教导。

以为对你有匡助的话,不错点个存眷,点个赞大衣,3Q~

本站仅提供存储办事,总共内容均由用户发布,如发现存害或侵权内容,请点击举报。




Powered by 佛山市顺德区合捷电器实业有限公司 @2013-2022 RSS地图 HTML地图

Copyright 站群系统 © 2013-2024 SSWL 版权所有

栏目分类

热点资讯

相关资讯