【问题记录】springMVC @Valid使用不生效问题

 

 

问题描述

在网上找到如何使用@Valid注解后,就把用到的配置和jar包加上,然后测试发现一直不生效。下面是配置及解决方法

配置

1.引入依赖

2.添加相应的配置(springmvc配置文件)

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
<mvc:annotation-driven validator="validator"/>

3.在需要校验的实体类中加入注解(注解所属包:javax.validation.constraints)

 4.写一个测试方法调用

运行之后发现BindingResult 一直是 0 errors

解决

检查了好几遍配置确定没问题,所以就自己在一个最简单的springMVC项目中写一个进行测试,发现上面的配置是没有问题的,打断点到源码中查看,发现没有获取到validator属性。

source_code_1

source_code_2

 

于是猜测有可能是配置的位置顺序导致的,所以就将配置的顺序进行调整,最后发现只要放在 json解析的后面就会一直获取不到值,放在前面就没有问题,然后问题解决

(其实也试过把其他的一些配置文件注释掉,最后无果。。。)

 虽然找到了问题所在和解决方式,但是并不是很清楚为什么json解析这块的配置会影响到validator的获取问题

参考链接

https://www.jianshu.com/p/036aa8bfad8f

https://www.cnblogs.com/xiu-zhan/p/7219535.html

原文地址:https://www.cnblogs.com/xsshu/p/11213021.html