<!-- 校验器 --> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <!-- 校验器--> <property name="providerClass" value="org.hibernate.validator.HibernateValidator" /> <!-- 指定校验使用的资源文件,在文件中配置校验的错误信息,如果不指定则默认使用classpath下的ValidationMessages.properties --> <property name="validationMessageSource" ref="messageSource" /> </bean> <!-- 校验错误信息配置文件 --> <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <!-- 资源文件名--> <property name="basenames"> <list> <value>classpath:CustomValidationMessages</value> </list> </property> <!-- 资源文件编码格式 --> <property name="fileEncodings" value="utf-8" /> <!-- 对资源文件内容缓存时间,单位秒 --> <property name="cacheSeconds" value="120" /> </bean>
<mvc:annotation-driven conversion-service="conversionService" validator="validator"></mvc:annotation-driven>
public class Items { private Integer id; //校验名称在1到30个字符之间 //message是提示校验出错显示的信息 @Size(min=1,max=30,message="{items.name.length.error}") private String name; private Float price; private String pic; //非空的校验 @NotNull(message="{items.createtime.isNULL}") private Date createtime; private String detail; //get和set方法省略 }
#添加校验错误提示信息 items.name.length.error=请输入1到30个字符的商品名称 items.createtime.isNULL=请输入商品的生产日期
//商品信息修改提交 //在需要校验的pojo前边加@Validated,在需要校验的pojo后边添加BindingResult bindingResult接收校验出错信息 //注意:@Validatedh和BindingResult bindingResult是配对出现,并且在形参中出现的顺序是固定的(一前一后) @RequestMapping("/editItemsSubmit") public String editItemsSubmit(HttpServletRequest request,Integer id, @Validated ItemsCustom itemsCustom,BindingResult bindingResult)throws Exception{ //获取校验错误信息 if(bindingResult.hasErrors()){ //输出错误信息 List<ObjectError> allErrors=bindingResult.getAllErrors(); for(ObjectError objectError:allErrors){ //输出错误信息 System.out.println(objectError.getDefaultMessage()); } } itemsService.updateItems(id, itemsCustom); //重定向到商品的查询列表 return "redirect:queryItems.action"; }
点击修改,如图
然后让生产日期为空,发现报错:
然后让名字大于30个字符,发现报错://获取校验错误信息 if(bindingResult.hasErrors()){ //输出错误信息 List<ObjectError> allErrors=bindingResult.getAllErrors(); for(ObjectError objectError:allErrors){ //输出错误信息 System.out.println(objectError.getDefaultMessage()); } //将错误传到页面 model.addAttribute("allErrors",allErrors); //出错之后要跳转的页面 return "items/editItems"; }
<!-- 显示错误信息 --> <c:if test="${allErrors}!=null"> <c:forEach items="${allErrors}" var="error"> <font color="red">${error.defaultMessage}</font><br/> </c:forEach> </c:if>
如图
转载请注明出处:http://blog.csdn.net/acmman/article/details/47441775