需要引入
<dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.4.1.Final</version> </dependency>
第二步在springmvc.xml中加入
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/> <!-- 如果不加默认到 使用classpath下的 ValidationMessages.properties --> </bean>
按照下列把validator对象进行初始化绑定(如若xml中用到mvc:annotation-driven配置的话。不需要这步操作。mvc:annotation-driven默认进行了如下操作)
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="cacheSeconds" value="0"/> <property name="messageConverters" ref="messageConverters"/> <property name="webBindingInitializer"> <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer"> <property name="validator" ref="validator" /> </bean> </property> </bean>
第三步如果用需要在具体Controller进行validator对象注入。不然不生效。我这里是写了基础控制器,其他控制器继承此类就可以
具体用法(如果不让其抛出异常。而是正常在controller进行错误信息返回,需要把@Valid的参数和Errors参数紧邻在一起,因为代码中有一处判断)
所以把要验证的参数和Errors相邻,就可以了
如果说的不清楚,可以更详细的问我(或加我qq1512180909)。以上均是实践操作而来的。不是从网上随便抄的。