怎么写Spring3 Validator的不同实现?

时间:2013-01-16 14:16:00

标签: java spring spring-mvc

我在Spring 3中有一个验证器

Class X implements Validator{
   public void validate(Object object, Errors errors) {

//Implementation 1
}
}

Class Y implements Validator{
   public void validate(Object object, Errors errors) {

//Implementation 2
}
}

现在我想通过使用实现1在一些情况(可能是Request Mapping1)的基础上验证我的模型,在其他情况下(RequestMapping 2)我想使用实现2.

我如何在Spring 3中实现这一目标

这是活页夹

@InitBinder
    protected void initBinder(WebDataBinder binder) {
        if (binder.getTarget() instanceof X) {
            binder.setValidator(new X());
        } 
    }

@RequestMapping("/Implementation1.html)
public String one(@Valid X x){
return "pg1";//I want 1st implementation of validator
}

@RequestMapping("/Implementation2.html)
public String one(@Valid X x){
return "pg2"; //I want 2nd implementation of validator
}

1 个答案:

答案 0 :(得分:0)

我已经完成了spring mvc的配置,它使用@Valid注释来验证bean。你可以在那里寻求帮助。 https://github.com/andonescu/springmvc-freemarker/tree/spring-3.2v

**如果您使用<mvc:annotation-driven/>配置Spring MVC,那么它将自动配置JSR 303验证器

  • 首先,在我看来,您要验证的对象 不需要实现Validator接口。那些课应该 仅在最简单的情况下,实施 Serializable

  • 然后,您可以注释要验证的类中的字段 - 带约束 - jsr 303 example here

  • 使用的注释
  • 第三,当你在控制器中使用类时,在类作为参数添加到方法之后,应该是BindingResult bindingResult,你可以使用该绑定结果来查明该对象是否有错误或不,example here

    @RequestMapping(“/ Implementation1.html)        public String one(@Valid X x,BindingResult bindingResult){       return“pg1”; //我想要第一次实现验证器 }