【问题标题】:mvc:annotation-driven - do I still need to bind Validators?mvc:annotation-driven - 我还需要绑定验证器吗?
【发布时间】:2010-11-27 01:06:54
【问题描述】:

我已将<mvc:annotation-driven/> 添加到我的 Spring 配置中,并根据它将提供的文档:

如果类路径中存在 JSR-303 Provider,则支持使用 @Valid 验证 @Controller 输入。验证系统可以通过设置验证器属性来显式配置。

从这个文档和其他文档中,我认为这意味着我不再需要在我的控制器类中显式注入验证器,它会自动完成。这是正确的吗?

目前我需要在我的控制器中有以下内容:

@Autowired
private Validator validator;

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.setValidator(validator);
}

谁能帮我解决这个问题?谢谢

【问题讨论】:

    标签: spring spring-mvc


    【解决方案1】:

    是的,没错。使用<mvc:annotation-driven>,您无需显式注入验证器。

    请注意,在典型的 Spring MVC 应用程序中,您有两个应用程序上下文,有关详细信息,请参阅 here,并且必须在 DispatcherServlet 的上下文中声明 <mvc:annotation-driven>

    【讨论】:

    • 但是我必须明确地注入它,否则验证不起作用。我可能会错过什么?
    • @Steve:确保<mvc:annotation-driven>DispatcherServlet 的上下文中声明,即...-servlet.xml
    • 我通常在myapp-config.xml 中声明东西,在我的web.xml 中引用为contextConfigLocation。这是因为我发现myapp-servlet.xml 会被执行两次,一次由 Tomcat 执行,一次由 Spring 执行。断点显示AnnotationDrivenBeanDefinitionParser正在执行
    • @Steve:已更新。为避免双重执行,您不应将 myapp-servlet.xml 添加到 contextConfigLocation
    • 在两个应用程序上下文中都需要 mvc:annotation-driven 是否正常?我似乎需要在 myapp-config.xml 中让 @Controllers 工作
    猜你喜欢
    • 1970-01-01
    • 2011-04-11
    • 2012-02-19
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 2011-11-04
    相关资源
    最近更新 更多