DispatcherServlet配置需要包含支持此处理程序的HandlerAdapter

Mug*_*ugu 11 spring annotations spring-mvc

我想在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" />
Run Code Online (Sandbox Code Playgroud)

我尝试访问该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)
Run Code Online (Sandbox Code Playgroud)

该怎么办?

blu*_*ter 31

当我尝试通过以下方式定义 RestController 路径时,出现了这个问题:

@RestController("/test")
public class TestController {}
Run Code Online (Sandbox Code Playgroud)

在上一节中,这个声明的含义是不同的。这里实际上“/test”被定义为bean名称而不是控制器的路径。

以这种方式定义路径后,它对我有用:

@RestController
@RequestMapping("/test")
public class TestController {}
Run Code Online (Sandbox Code Playgroud)


小智 9

当您定义了一个 restController 但忘记定义 requestMapping 时,也会发生此错误。

@RestController
@RequestMapping("/api/orders") // <---- dont't forget the requestMapping
Run Code Online (Sandbox Code Playgroud)


Mug*_*ugu 6

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