<!-- spring validation --> <mvc:annotation-driven conversion-service="conversionService" validator="validator"/> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"/> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/> <!--不设置则默认为classpath下的 ValidationMessages.properties --> <property name="validationMessageSource" ref="validatemessageSource"/> </bean> <bean id="validatemessageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basename" value="classpath:validatemessages"/> <property name="fileEncodings" value="utf-8"/> <property name="cacheSeconds" value="120"/> </bean>
注意相关架包版本
<!-- javax.validation--> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency> <!-- hibernate-validator--> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.2.2.Final</version> </dependency>
controller演示
@RequestMapping(value="/test", method=RequestMethod.GET) //json xml vm @ResponseStatus(HttpStatus.OK) //200 public String getUser(ModelMap model,@Valid AccountQuery query,BindingResult bindingResult ) { System.out.println(query.getUserName()); if(bindingResult.hasErrors()){ for(FieldError o:bindingResult.getFieldErrors()){ model.put(o.getField(), o.getDefaultMessage()); } model.put("error", true); model.remove("accountQuery"); return ""; } model.put("error", false); return ""; }
model只需要在相关字段上添加注解就可以了,附件里面是JSR-349部分规范