`
这些年
  • 浏览: 389054 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

表单绑定验证(转)

 
阅读更多

最近因项目不得不研究下spring表单验证,通过搜索资料,最后还是决定使用spring-modules-validation.jar 

以下是相关的代码 
实体bean 

Java代码  收藏代码
  1. public class Configuration{  
  2.     @NotNull  
  3.     @Length(min=3,max=10)  
  4.     private String name;//配置名称  
  5.     ...............  
  6. }  



controller 

Java代码  收藏代码
  1. @Autowired  
  2. private Validator validator;  
  3.      
  4. @RequestMapping(CREATE)  
  5. public String save (@ModelAttribute("configuration") Configuration object,BindingResult result, HttpServletRequest request,ModelMap model){  
  6.     //表单验证  
  7.     validator.validate(object, result);  
  8.     List<ObjectError> error  = result.getAllErrors();  
  9.     log.debug("result>>"+result);  
  10.       
  11.     if (result.hasErrors()) {  
  12.         model.addAttribute("objectErrorList",result.getAllErrors());  
  13.         return FORM;  
  14.     }  




配置 

Java代码  收藏代码
  1. <bean id="configurationLoader" class="org.springmodules.validation.bean.conf.loader.annotation.AnnotationBeanValidationConfigurationLoader"/>   
  2.   
  3. <bean id="validator" class="org.springmodules.validation.bean.BeanValidator" p:configurationLoader-ref="configurationLoader"/>   
  4.   
  5. <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource" p:basename="classpath:errors">   
  6.     <property name="defaultEncoding" value="utf-8" />  
  7. </bean>  
  8.   
  9. 后一个是设置一个errors.properties  




jsp页面 

Java代码  收藏代码
  1. <c:forEach items="${objectErrorList}" var="error"  varStatus="idx">  
  2.     ${idx.index+1 }:<spring:message code="${error.code}"/><br/>  
  3. </c:forEach>  



其实这里还有另外一种写法,就是不要使用errors.properties 
而直接把异常的提示信息写在实体bean中 
eg: 

Java代码  收藏代码
  1. @Length(min=3,max=10,message="xxxxx")  


在这里的xxxxx如果是中文的话,记得需要先转码再复制填充进去 
然后再jsp页面是需要这样调用 

Java代码  收藏代码
  1. <c:forEach items="${objectErrorList}" var="error"  varStatus="idx">  
  2.     ${error.defaultMessage}<br/>  
  3. </c:forEach>  




另外 
1.在实体bean中还可以设置其他的验证规则,这个可以研究下spring-modules-validation.jar中的org.springmodules.validation.bean.conf.loader.annotation.handler包下面的类,如@Email验证电子邮箱的输入 

2.properties文件的中文问题可以这样解决,使用jdk中的native2ascii.exe工具 
native2ascii.exe -encoding iso8859_1 errors.properties errors2.properties(其中的iso编码这个需要根据你系统的需要进行设置) 

参考网址: 
1.http://www.enavigo.com/2010/08/13/spring-bean-validation-error-code-list-for-custom-error-message/ 

2.http://wheelersoftware.com/articles/spring-bean-validation-framework-1.html 


以上是我的一些心得,估计也不是最好的方法,如果有更好,还恳请高手指导一下

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics