网站建设哪家强,注册一个域名需要多少钱,响应式网站应该怎么做,怎么样让网站网址有图标Validated注解不生效问题汇总 文章目录Validated注解不生效问题汇总背景#xff1a;一#xff1a;可能原因原因1#xff1a;原因2#xff1a;原因3#xff1a;原因4#xff1a;二#xff1a;补充全局异常对validation的处理背景#xff1a;
项目框架应用的是validatio…Validated注解不生效问题汇总 文章目录Validated注解不生效问题汇总背景一可能原因原因1原因2原因3原因4二补充全局异常对validation的处理背景
项目框架应用的是validation进行检验的但是最近一直不生效然后排查了下问题总结了失效的常见几个原因
一可能原因
原因1
在2.3.0版本之前spring-boot-starter-web是集成了validation检验的 但是在2.3.0开始就去掉了该依赖所以需要自己添加该依赖。
添加依赖为 !-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-validation/artifactIdversion3.0.2/version/dependency原因2
参数如果是非对象格式需要在controller类上面添加Validated注解 原因3
参数如果是对象的话属性的前面的需要添加 Valid注解 原因4
如果是嵌套对象的话里面的对象还要添加 Valid注解截图如下 这里要注意如果是集合对象同样需要添加Valid注解不然不生效的 二补充全局异常对validation的处理
/*** 处理 Validated 异常信息** param req* param e* return*/
ExceptionHandler
public BaseResponse methodArgumentNotValidExceptionHandler(HttpServletRequest req, MethodArgumentNotValidException e) {log.warn(Url:{},Method:{} .\nController called error!Catch in ErrorHandler, req.getRequestURI(),req.getMethod(), e);String message ;try {message e.getMessage().substring(e.getMessage().lastIndexOf([) 1, e.getMessage().lastIndexOf(]) - 1);} catch (Exception ex) {log.error(Validated截取异常信息失效,已重置,所有异常信息为:{}, e.getMessage());message ErrorCodeEnum.PARAMETER_FORMAT_ERROR.getMessage();}return BaseResponse.error(ErrorCodeEnum.PARAMETER_FORMAT_ERROR.getCode(), message);
}