SpringBoot使用@Valid注解失效,最终找到罪魁祸首并解决

编程入门 行业动态 更新时间:2024-10-15 14:19:25

SpringBoot使用@Valid注解失效,最终找到<a href=https://www.elefans.com/category/jswz/34/1764047.html style=罪魁祸首并解决"/>

SpringBoot使用@Valid注解失效,最终找到罪魁祸首并解决

一、前言

SpringBoot使用@Valid校验参数失效,一开始是正常的,看了很久代码才发现了原因,不是网上说的pom导包的问题。

二、经过


加了相关校验注解,就是不生效,然后想起之前加了一个web参数绑定器,把前端的日期字符转成LocalDateTime对象。

WebMvcConfig配置类

@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {/*** web参数绑定器* @param requestMappingHandlerAdapter*/@Autowiredpublic void setWebBindingInitializer(RequestMappingHandlerAdapter requestMappingHandlerAdapter) {requestMappingHandlerAdapter.setWebBindingInitializer(new CustomWebBindingInitializer());}

就是*requestMappingHandlerAdapter.setWebBindingInitializer()*这一行代码,把默认的参数绑定器都给覆盖了,导致参数校验框架失效,去掉就正常了。

三、使用Converter转换LocalDateTime对象

Converter类

/*** 字符转LocalDateTime对象* @author zsq* @date 2021/8/28 11:33**/
public class DateTimeConverter implements Converter<String, LocalDateTime> {private static DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");@Overridepublic LocalDateTime convert(String dateStr) {if (dateStr == null || dateStr.trim().equals("")) {return null;}LocalDateTime parse = null;if (dateStr != null && !"".equals(dateStr.trim())) {try {parse = LocalDateTime.parse(dateStr, dateFormatter);} catch (Exception e) {//使用默认的转换格式parse = LocalDateTime.parse(dateStr);}}return parse;}}

添加到WebMVC配置

@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {@Overrideprotected void addFormatters(FormatterRegistry registry) {super.addFormatters(registry);//日期LocalDateTime转换registry.addConverter(new DateTimeConverter());}

四、完美解决

参数校验正常,日期也能正常转换。

更多推荐

SpringBoot使用@Valid注解失效,最终找到罪魁祸首并解决

本文发布于:2024-03-11 15:12:03,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1729243.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:罪魁祸首   注解   SpringBoot   Valid

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!