当前位置 : 主页 > 编程语言 > c++ >

SpringMVC的数据校验一:实现Validator接口

来源:互联网 收集:自由互联 发布时间:2021-07-03
ch.text 数据校验主要针对于用户的误输入问题,目前主要有两种方法进行验证输入,一种是Spring自带的Validation校验框架,一种是JSR303(JAVA验证规范)实现校验功能。1.Spring的Validation校验框
ch.text
数据校验主要针对于用户的误输入问题,目前主要有两种方法进行验证输入,一种是Spring自带的Validation校验框架,
一种是JSR303(JAVA验证规范)实现校验功能。
1.Spring的Validation校验框架
 (1)Form表单
 
 
     
   
   
     
     用户名: 
     
       
     
       
     
     
     密码:  
      
   
  
	
 
(2)完成校验功能的类,实现Validator接口
public class UserValidator implements Validator {
   //判断参数所代表的类是否相同
	public boolean supports(Class
  clazz) {
		// TODO Auto-generated method stub
		return User.class.equals(clazz);
	}
    //核心方法,完成对目标Target类的校验,并将信息保存在Errors对象中
	public void validate(Object target, Errors error) {
		// TODO Auto-generated method stub
   //校验工具,ValidationUtils.rejectIfEmpty()里面四个参数:1,errors对象。2,需要验证的对象的属性。
   //3,国际化中的key值。4,如果找不到国际化的key对应的value,就默认用这个值。对于不需要国际化的项目直接设置在这里就行。
		ValidationUtils.rejectIfEmpty(error, "username", null,"用户名不能为空");
		ValidationUtils.rejectIfEmpty(error, "password", null,"密码不能为空");
		User user=(User) target;
        //rejectValue方法中可以包括2-4个参数,可以根据需要选择,第一个表单域field,
            //区分是哪个表单出错,第二个errorCode错误码,
            //第三个制定了资源文件中占位符,第四个具体错误返回信息
            //简写版可以把2,3参数去掉
        if(user.getUsername().length()>6){
        	error.rejectValue("username", null, "用户名不能超过6个字符");
        }
        if(user.getPassword()!=null&&user.getPassword().length()<6){
        	error.rejectValue("password", null, "密码不能小于6个字符");
        }
	}
}
(3)控制器中需要校验的地方
//通过@InitBinder注解为控制器初始化的时候注册属性编辑器
@InitBinder
	public void initBinder(DataBinder binder){
        //设置校验类
		binder.setValidator(new UserValidator());
	}
    //完成校验类的注册后通过@Validated注解在需要校验的参数上面进行设置完成校验,通过校验器的validate方法实现
	@RequestMapping(value="/register",method=RequestMethod.POST)
	public String register(@Validated User user,Errors errors){
        //判断是否出错,通过hasFieldErrors方法
		if(errors.hasFieldErrors()){
			return "registerform";
		}else{
			return "welcome";
		}	
	}
网友评论