1. 搭建web工程
2. 导入jar包
spring-beans.jar、spring-context.jar、spring-core.jar、spring-expression.jar、spring-aop.jar、spring-web.jar、spring-webmvc.jar、
【
hibernate-validator-4.3.0.Final.jar、jboss-logging-3.1.0.CR2.jar、validation-api-1.0.0.GA.jar
】
添加依赖包: commons-logging.jar、aopalliance.jar
3.在spring-mvc.xml中配置校验器
<!-- 校验器 -->
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<!--Hibernate校验器-->
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>
<!-- 指定错误信息配置文件:默认情况读取类路径classpath下的 ValidationMessages.properties-->
<property name="validationMessageSource" ref="messageSource"></property>
</bean>
<!--读取错误信息配置文件 -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<!-- 文件路径 -->
<property name="basenames">
<value>classpath:CustomerValidationMessages</value>
注意:在类路径下自定义的配置文件
</property>
<!-- 指定文件编码格式 -->
<property name="fileEncodings" value="utf-8"></property>
<!-- 指定文件内容缓存时间,秒为单位 -->
<property name="cacheSeconds" value="60"></property>
</bean>
4. 在spring-mvc.xml文件中,将校验器注入到适配器中
<!-- 处理器适配器、处理器映射器 -->
<mvc:annotation-driven validator="validator"></mvc:annotation-driven>
5. 添加校验规则
public class User {
//用户名不能为空
@NotEmpty(message="{user.username}")
public String username;
//密码长度必须在6-12之间
@Length(min=6,max=12,message="{user.password}")
public String password;
//必须符合正则表达式规则
@Email(regexp="^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$")
private String email;
}
8. 在spring-mvc.xml文件中,配置错误信息文件CustomerValidationMessages.properties
user.username = 用户名不能为空
user.password = 密码长度必须在6-12之间
user.email = 邮件格式不正确
9. 捕获错误信息
@Controller
public class UserController {
@RequestMapping("/insertUser")
public String insertUser(Model model,@Validated User user,BindingResult bindingResult,Integer uid)
{
if(bindingResult.hasErrors())
{
//获取所有的错误信息
List<ObjectError> errorList = bindingResult.getAllErrors();
for (ObjectError error : errorList) {
System.out.println(error.getDefaultMessage());
}
/*
* 数据回显
*/
//1.POJO类型会默认保存在request作用域中
//model.addAttribute("user", user);
//2.简单数据类型Integer、String、Double需手动保存
model.addAttribute("uid", uid);
//保存错误信息
model.addAttribute("errorMsg", errorList);
return "index";
}
else
{
return "main";
}
}
}
10.显示错误信息
11.测试
http://localhost:8088/springMvc_05_validation/index.jsp