1. sprng mvc validation校验 笔记
springmvc使用JSR-303(javaEE6规范的一部分)校验规范,
springmvc使用的是HibernateValidator(和Hibernate的ORM)
1.1. 加入HibernateVlidator的jar
2.2 在springmvc 里面配置 “校验器,适配器,处理器映射器,转换器”
<!-- 配置bean验证器 -->
<!-- 通过annotation-driven可以替代下边的处理器映射器和适配器
<mvc:annotation-driven conversion-service="conversionService" validator="validator"> </mvc:annotation-driven>
-->
<!-- 校验器,配置validator --><bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"><property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property><property name="validationMessageSource" ref="validationMessageSource"></property></bean><!-- 配置validationMessageSource --><bean id="validationMessageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"><!-- 指定检验信息的资源文件名称,不包括后缀,后缀默认是properties --><property name="basenames"><list><value>classpath:validationMessageSource</value></list></property><!-- 指定文件编码 --><!-- error utf-8 错误 , utf8 --><property name="fileEncodings" value="utf-8"></property><property name="cacheSeconds" value="120"></property></bean><!-- 自定义webBinder --><bean id="customBinder" class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer"><property name="validator" ref="validator"></property></bean><!-- 注解适配器<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"><property name="webBindingInitializer" ref="customBinder"></property></bean> <!-- 注解处理器映射器 <beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>--><!-- 转换器 --><bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"><property name="converters"><list><bean class="com.xxx.CustomDateConverter" /><bean class="com.xxx.StringTrimConverter" /></list></property></bean>
2.3.编写 validationMessageSource.properties 文件
2.4编写 实体类
2.4 编写Controller
//@validated:对它注解的pojo进行验证
//BindingResult:通过这个对象可以获取检验失败信息。
@RequestMapping("/validataUser")
public String validataUser(Model model , @Validated User user,BindingResult result){
if(result.hasErrors()){
List<ObjectError> allErrors = result.getAllErrors();
for (ObjectError objectError : allErrors) {
System.err.println(objectError.getDefaultMessage());
}
model.addAttribute("errors", allErrors);
}
return "validata";
}