在使用JSR303 validator时出现的错误.
环境配置: JDK8、Tomcat 7.
错误
type Exception report
message java.lang.NoClassDefFoundError: javax/el/ELResolver
description The server encountered an internal error that prevented it from fulfilling this request.
exception
Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0
.....
javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver
在springMVC上使用Hiberntae Validator,运行Tomcat时出现了上述的错误
解决方法:
使用Tomcat 8,不要使用Tomcat 7.
我的project的部分配置如下:
1. pom.xml的部分
<!--Hibernate Validator-->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.7.Final</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
<scope>provided</scope>
</dependency>
- springMVC-servlet.xml部分
<mvc:annotation-driven validator="validator"/>
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
<property name="validationMessageSource" ref="messageSource"/>
</bean>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<!-- 国际化资源文件配置,指定properties文件存放位置 -->
<property name="basenames" value="messages.message"/>
<!--如果读取不到国际化文件,默认读取message.properties-->
<property name="useCodeAsDefaultMessage" value="true"/>
</bean>