你的位置:光能科技(哈尔滨)有限公司 > 新闻资讯 > 复返的json数据可能并不是我们最终想要的
复返的json数据可能并不是我们最终想要的
发布日期:2024-07-03 16:14 点击次数:143
@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~
本站仅提供存储办事,通盘内容均由用户发布,如发现存害或侵权内容,请点击举报。
上一篇:没有了
下一篇:没有了