最近看到一篇博客 介绍@valid 和 @validate 注解,想到项目里的垃圾验证代码,很恶心。所以就照着博客里弄 ,结果出现上面的错误。。。。
参考博客
查了网上的一堆博客,发现 好像是 主要是 el-api版本问题,
我的是tomcat7 , 传统的spring 项目 所以 hibernate-validator 不能高版本 ,必须5.x版本
后来一顿折腾 ,发现tomcat lib 包下的 el-api-2.2.1-b04.jar 这个版本低,好像看到 说必须要高版本的才行,删除了 tomcat7 中的 el-api .引入3.0版本解决
直接从tomcat 8 的 lib考了一个 3.0版本的 解决问题
同时必须配置 一个处理器 ,看了底层是 aop 的思想
@Configuration
public class RootConfig {
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
}
我的 pom依赖
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.1.Final</version>
</dependency>
//这个和下面的我想吐槽 网上一堆2.2.4 /2.2.6/ 3.0.0 版本 ,看晕了 但是下载jar包下来 发现3.0.0 有elManage类
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>