0

我在 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 在某些情况(可能是请求映射 1)的基础上验证我的模型,在其他情况下(请求映射 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
}
4

1 回答 1

0

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

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

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

  • 然后,您可以注释要验证的该类中的字段 - 带有约束 -此处的 jsr 303 示例使用的注释

  • 第三,当你在控制器中使用类时,在方法中添加类作为参数后,应该是 BindingResult bindingResult,你可以使用该绑定结果来查找该对象是否有错误,例如here

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

于 2013-01-16T14:47:35.190 回答