【问题标题】:The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handlerDispatcherServlet 配置需要包含一个支持此处理程序的 HandlerAdapter
【发布时间】:2014-10-23 12:37:33
【问题描述】:

我想在 Spring MVC 中同时使用注解映射和 xml 映射。我的application-context.xml如下:

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="personal/account/history">accountHistoryController</prop>
            </props>
        </property>
    </bean>

    <bean id="accountHistoryController" class="com.fg.banking.ib.controller.AccountHistoryController" />

    <bean
        class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
    <context:annotation-config />
    <mvc:annotation-driven />
    <context:component-scan base-package="com.fg.banking.ib.controller, com.fg.banking.ib.helper, com.fg.banking.corporate.controller" />

当我尝试访问 url 时出现以下错误。我已经按照上面的方式配置了 SimpleControllerHandlerAdapter。

javax.servlet.ServletException: No adapter for handler 
[com.fg.banking.ib.controller.AccountHistoryController@218531e6]: The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handler
org.springframework.web.servlet.DispatcherServlet.getHandlerAdapter(DispatcherServlet.java:1128)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:903)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)

怎么办?

【问题讨论】:

  • 首先不要混合基于注释的 mvc 和基于 xml 的。如果你想使用 那就这样做吧。

标签: spring spring-mvc annotations


【解决方案1】:

当你定义了一个restController但忘记定义requestMapping时也会出现这个错误。

@RestController
@RequestMapping("/api/orders") // <---- dont't forget the requestMapping

【讨论】:

    【解决方案2】:

    我解决了这个问题。我忘了在控制器类中添加@Controller 注释。我们可以在一个应用程序中同时使用这两种方法(注解映射和 XML 映射)。

    【讨论】:

    • 为简单起见切换到Spring Boot
    【解决方案3】:

    尝试添加以下作为处理程序映射器(为我工作):

    <bean id="HandlerMapping" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
    

    【讨论】:

      【解决方案4】:

      确保您在控制器类中实现了Controller 并覆盖了handleRequest 方法。

      【讨论】:

        【解决方案5】:

        这里我们的控制器类应该扩展

        import org.springframework.web.servlet.mvc.AbstractController;
        
        public class AppController extends AbstractController{ }
        

        这里我们需要将抽象方法实现为:

        protected modelandview handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { return null; }
        

        【讨论】:

        • 公共类 AppController 实现 Controller{ 也可以
        猜你喜欢
        • 1970-01-01
        • 2021-07-27
        • 2017-03-15
        • 2016-07-01
        • 1970-01-01
        • 2019-06-25
        • 1970-01-01
        • 2015-09-22
        • 2011-03-08
        相关资源
        最近更新 更多