Spring validate 框架笔记
一, 页面准备
1,引用spring 的标签库<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>,采用spring的form标签,form的重要属性modelAttribute不能忘记了,modelAttribute="userVO"(控制层接收对象或表单对象),其他的标签的属性path就填写modelAttribute属性值的对象的属性就行了。
二, 在controller方法的参数为userVO,后面要紧跟着BindingResult对象,不然的话会报错,这个对象可以用来传递到页面显示错误信息,方法如下:
public ModelAndView add(UserVOuserVO,BindingResult bindingResult){
//TODOdo some code
return new ModelAndView();
}
三, 在校验对象的时候,写一个类去实现spring Validator接口,并实现validate接口。
四, 在校验属性的时候,可用以下方法:
ValidationUtils.rejectIfEmpty(errors, "username","user.username.empty");
说明:username是UserVO的一个属性,这个可以判断是否为空或null,如果是空或null会直接把user.username.empty对应的资源文件中的key值放进行errors对象中;如果要对值做其他验证,如长度限制,可以用常用的方法,但加入错误信息则用:
errors.rejectValue("username", "user.username.too.long",new Object[] { USERNAME_MAX_LENGTH }, null);
rejectValue有多个重载方法;
五, 验证流程
1, 在提交表单的时候,因为modelAttribute="userVO"这个属性,直接把这个对象加入到errors对象的target属性中;
2, 在验证过程中,要得到被验证的对象,可以直接获取:
UserVO userVO=(UserVO) target;
3, 验证某个属性是否为空,直接可以用工具类ValidationUtils,里面有很多工具,常见的ValidationUtils.rejectIfEmpty(errors, "username","user.username.empty");直接校验某个属性是否为空或null,且直接把错误信息添加到errors对象中;
4, 对于非空的其他验证,可以采用普通的验证方式,在添加到错误信息的时候用
errors.rejectValue("username", "user.username.too.long",new Object[] { USERNAME_MAX_LENGTH }, null);
rejectValue有多个重载方法;
六, 页面接收错误信息
<form:errors path="username"/>path跟你的验证属性一致就行;
记录点滴,方便大家。