gpt4 book ai didi

java - with un-annotated controllers

转载 作者:搜寻专家 更新时间:2023-10-31 08:24:09 27 4
gpt4 key购买 nike

我的项目包括较旧的未注释 Controller 和较新的基于注释的 Controller 。

我使用的是最新的 Spring jar (3.0.5),在我的 dispatcher-servlet.xml 中有 <mvc:annotation-driven /> .

问题是 <mvc:annotation-driven />导致请求映射(通过 dispatcher-servlet.xml 中 Controller bean 的名称属性)到我未注释的 Controller 无法工作...每次我将请求定向到未注释的 Controller 时,我都会收到错误消息消息如:

org.springframework.web.servlet.DispatcherServlet noHandlerFound  
WARNING: No mapping found for HTTP request with URI [/some_path/some_page.htm] in DispatcherServlet with name 'dispatcher'

如何让未注释的 Controller 保持原样,但告诉 spring 识别它们的(旧样式)映射?

我正在寻找对我已有的 Controller 的 Java 代码进行最少更改的解决方案。

谢谢!

最佳答案

当您添加 <mvc:annotation-driven /> 时在您的配置中,它替换了默认的处理程序映射和处理程序适配器集,这些默认值是处理旧式 Controller 的。

您有 2 个选择。首先要尝试删除 <mvc:annotation-driven /> .没有这个你仍然可以使用带注释的 Controller 。它确实添加了 Jackson JSON 支持等额外功能,但如果您不需要这些额外功能,那么您就不需要它。所以在没有 <mvc:annotation-driven /> 的情况下尝试你的应用程序看看它是否仍然有效。

否则,您可以恢复旧 Controller 的映射和适配器。您没有说明您的 Controller 过去是如何映射其 URL,但请尝试将这些添加到您的配置中:

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean class="org.springframework.web.servlet.handler.ControllerClassNameHandlerMapping"/>

如果您使用了 SimpleUrlHandlerMapping ,那么这应该已经开始工作了。

您还需要添加 HandlerAdapter返回:

<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

不要盲目地添加这些。分别尝试它们,看看要让旧 Controller 与新 Controller 一起工作的最小设置是多少。

关于java - <MVC :annotation-driven/> with un-annotated controllers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7199652/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com