В конфигурации DispatcherServlet должен быть включен HandlerAdapter, который поддерживает этот обработчик

Я хотел использовать как сопоставление аннотаций, так и xml-отображение в Spring MVC. Мое 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 
[[email protected]]: 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)

Что делать?

Ответ 1

Я решил проблему. Я забыл добавить аннотацию @Controller в классе контроллера. Поэтому мы можем использовать оба метода (отображение аннотаций и отображение XML) вместе в приложении.

Ответ 2

Убедитесь, что вы реализовали Controller в классах контроллеров и переопределили метод handleRequest.

Ответ 3

Попробуйте добавить следующее в качестве обработчика (работает для меня):

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

Ответ 4

Здесь наш класс контроллера должен расширяться

import org.springframework.web.servlet.mvc.AbstractController;

public class AppController extends AbstractController{ }

Здесь нам нужно реализовать абстрактный метод следующим образом:

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