一、Spring集成JSR-303验证框架:
1、在pom.xm中添加JSR-303验证框架的hibernate实现:hibernate-validator
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.2.2.Final</version> </dependency>
2、在springmvc-servlet.xml配置中添加对JSR-303验证框架的支持
<!--配置HibernateValidator--> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/> <property name="validationMessageSource" ref="messageSource"/> </bean> <!--使用Spring的MessageSource Bean进行消息键值的查找--> <bean id= "messageSource" class= "org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name= "basename" value= "classpath:messages"/> <property name= "fileEncodings" value= "utf-8"/> <property name= "cacheSeconds" value= "120"/> </bean> <!-- 默认的注解映射支持,配置注册validator --> <mvc:annotation-driven validator="validator"/>
3、在classpath下添加错误消息属性文件messages.properties:
NotNull.user.username=用户姓名不能为空 Length.user.username=用户名长度必须在5-10之间 Pattern.user.username=用户名必须以字母下划线开头,可由字母数字下划线组
4、使用JSR-303验证框架注解为模型对象指定验证信息
public class UserModel { @NotNull(message="{NotNull.user.username}") @Length(min=5, max=20,message="{Length.user.username}") @Pattern(regexp = "^[a-zA-Z_]\\w{4,19}$",message="{Pattern.user.username}") private String username; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } }
5、在Controller需要验证的模型对象前加@Valid注解:
@Controller public class HelloWorldController { @RequestMapping("/validate/hello") public String validate(@Valid @ModelAttribute("user") UserModel user, Errors errors) { if(errors.hasErrors()) { return "validate/error"; } return "redirect:/success"; } }
6、验证失败后需要展示的页面(/WEB-INF/jsp/validate/error.jsp):
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <form:form commandName="user"> <form:errors path="*" cssStyle="color:red"></form:errors><br/> </form:form>
二、扩展讨论:
1、错误消息属性文件的键的命名推荐:
验证错误注解简单类名.验证对象名.字段名
如NotNull.user.username
ps:简单、精准、不费脑,而且spring默认识别该错误消息键,验证注解的message属性可以省了,不过这样在属性文件中就不支持占位符了
2、方法上添加了@ResponseBody注解,验证是否有效:
有效,如果需要返回错误信息,可通过errors.getFieldError("username").getDefaultMessage()获取错误信息
3、一个功能处理方法上需要验证多个模型对象时,需要通过如下形式来获取验证结果:
@RequestMapping("/validate/multi") public String multi( @Valid @ModelAttribute("a") A a, BindingResult aErrors, @Valid @ModelAttribute("b") B b, BindingResult bErrors) { if(aErrors.hasErrors()) { //如果a模型对象验证失败 return "validate/error"; } if(bErrors.hasErrors()) { //如果a模型对象验证失败 return "validate/error"; } return "redirect:/success"; }
每一个模型对象后边都需要跟一个Errors或BindingResult对象来保存验证结果,其方法体内部可以使用这两个验证结果对象来选择出错时跳转的页面。
在错误页面,需要针对不同的模型来显示错误消息:
<form:form commandName="a"> <form:errors path="*" cssStyle="color:red"></form:errors><br/> </form:form> <form:form commandName="b"> <form:errors path="*" cssStyle="color:red"></form:errors><br/> </form:form>
三、引用:
相关推荐
hibernate-validator, jboss-logging validation-api等包
这个能很简单并快捷的配置完成数据校验,提高安全性,并提高开发效率,以及提高系统的安全性以及高效性
SpringMVC数据验证——注册用户格式的验证实例,具体过程和效果看博文http://blog.csdn.net/evankaka/article/details/45789283
SpringMVC入门很简单之数据验证,具体参考博文:http://www.cnblogs.com/liukemng/tag/SpringMVC/
springmvc注解式控制器的数据验证、类型转换及格式化 SpringMVC数据验证 参数传递
SpringMVC JSR 数据校验完整jar包下载,一共六个jar包,classmate-1.0.0.jar,hibernate-validator-5.0.0.final.jar,hibernate-validator-annotation-processor-5.0.1.final.jar,hibernate-validator-cdi-5.0.0....
大三(二)springmvc数据校验
主要介绍了SpringMVC 数据校验实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
下面小编就为大家带来一篇SpringMVC 数据校验方法(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
SSM笔记-SpringMVC的数据格式化 、数据校验、错误提示、错误信息国际化、返回json
SpringMVC JSR303数据校验DEMO(附:JSR303的JAR包) SpringMVC JSR303数据校验DEMO(附:JSR303的JAR包)
借助RESTful风格的CRUD实现数据类型的转换、数据的格式化和数据校验操作
SpringMVC数据类型转换超详细介绍,注解式控制器的数据验证、类型转换及格式化
跟开涛学SpringMVC(7.3)SpringMVC数据验证Java开发Java经验技巧共13页.pdf.zip
主要介绍了springmvc的数据校验的实现示例代码, 具有一定的参考价值,感兴趣的小伙伴们可以参考一下
SpringMVC 数据的格式化、JSR 303数据校验和国际化 实例.zip 对应博客:http://blog.csdn.net/peng_hong_fu/article/details/53559773
在springMVC数据校验时的 springMVC数据校验所需校验包, hibernate-validator.jar,jboss-logging.jar,validation-api.jar.
在线版目录 第一章 Web MVC简介 第二章 Spring MVC入门 第三章 DispatcherServlet详解 第四章 Controller接口控制器详解(1) ...第七章 注解式控制器的数据验证、类型转换及格式化 SpringMVC数据验证
在线版目录 第一章 Web MVC简介 第二章 Spring MVC入门 第三章 DispatcherServlet详解 第四章 Controller接口控制器详解(1) ...第七章 注解式控制器的数据验证、类型转换及格式化 SpringMVC数据验证