数据校验分为前台校验(js)和后台校验.
Spring帮我们定义了校验的规则,hibernate4.0帮我们实现了校验规则。
来说一下后台校验:
要实现数据校验第一步需要在实体类定义校验规则:
public class User {
@Length(min=5,max=20,message="{user.name.error}")
private String name;
@NotNul(message="{user.birthday.isnull}")
private Date birthday;
}
第二步:创建校验信息文件
第三步:在SpringMVC.xml中配置校验器,配置校验信息文件,注册校验器
<!-- 注册校验器 -->
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<!-- 提供的类 -->
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>
<!-- 指定校验信息文件 -->
<property name="validationMessageSource" ref="messageSource"></property>
</bean>
<!-- 配置校验信息文件 -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<!-- 文件名 -->
<property name="basenames">
<list>
<value>classpath:CustomValidateMessage</value>
</list>
</property>
<!-- 文件编码 -->
<property name="fileEncodings" value="utf-8"></property>
<!-- 资源文件的缓存时间 120秒 -->
<property name="cacheSeconds" value="120"></property>
</bean>
<mvc:annotation-driven conversion-service="convertService" validator="validator"></mvc:annotation-driven>
第四步:指定校验对象
/*@Validated 说明验证的对象
* BindingResult 保存验证的信息
* **/
@RequestMapping("validateUser")
public String validateUser(@Validated User user,BindingResult bindingResult,Model model){
System.out.println("ValidateController---validateUser"+bindingResult.getErrorCount());
if(bindingResult.hasErrors()){
model.addAttribute("errors",bindingResult.getAllErrors());
return "uservalidate";
}else{
System.out.println("user="+user);
return "success";
}
}
第五步:在jsp页面打印错误信息
<c:if test="${errors!=null }">
<c:forEach items="${errors }" var="e">
${e.defaultMessage }
</c:forEach>
</c:if>