本文主要是介绍Spring MVC Validator 验证,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在使用Spring MVC时,使用了它服务端的验证Validator 验证。遇到了一个问题,在这里记录下。
问题:由于在一个Controller中存在多个可供WEB端使用的方法,根据方法的不同调用不同的验证Validator 进行对参数的验证,例子如下所示:
方法一简单案例:
public String amethod(@ModelAttribute("matObjecta")MatObjectA matObjecta, BindingResult bindingResult){......
}@InitBinder("matObjecta")
public void initBinder(DataBinder binder) {binder.setValidator(new MatobjectAvalidator());
}
方法二简单案例:
public String bmethod(@ModelAttribute("matObjectb")MatObjectB matObjectb, BindingResult bindingResult){......
}
@InitBinder("matObjectb")
public void initBinder(DataBinder binder) {binder.setValidator(new MatobjectBvalidator());
}
一、注解说明:
@ModelAttribute("") 注解用于指定的参数的名称,如果不指定默认是对象名称的首字母小写形式。
@InitBinder("")注解的参数为@ModelAttribute("") 设置的参数名称时,表示此方法只会在存在@ModelAttribute("") 指定名称相同的参数时,在方法体调用之前执行。如果@InitBinder未设置任何参数时将会在Controller下的所有方法体调用之前都会默认执行,并将反馈结果存在BindingResult 中返回。
二、验证方法书写方式
public class MatobjectAvalidator implements Validator {@Overridepublic boolean supports(Class<?> clazz) {return MatObjectA.class.equals(clazz);}@Overridepublic void validate(Object target, Errors errors) {MatObjectA matObjectA = (MatObjectA ) target;//添加错误信息 会将错误信息反馈到 BindingResult 中errors.rejectValue("CODE","VALUE");}
}
三、读取错误信息方式:
可以使用以下方法读取BindingResult 中的错误信息。
for (ObjectError error : bindingResult.getAllErrors()) {System.out.println(error.getCode());}*注:BindingResult 必须定义为Controller中方法的最后 一个参数。
这篇关于Spring MVC Validator 验证的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!