Ответ 1
Я решил проблему. Я забыл добавить аннотацию @Controller
в классе контроллера. Поэтому мы можем использовать оба метода (отображение аннотаций и отображение XML) вместе в приложении.
Я хотел использовать как сопоставление аннотаций, так и 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)
Что делать?
Я решил проблему. Я забыл добавить аннотацию @Controller
в классе контроллера. Поэтому мы можем использовать оба метода (отображение аннотаций и отображение XML) вместе в приложении.
Убедитесь, что вы реализовали Controller
в классах контроллеров и переопределили метод handleRequest
.
Попробуйте добавить следующее в качестве обработчика (работает для меня):
<bean id="HandlerMapping" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
Здесь наш класс контроллера должен расширяться
import org.springframework.web.servlet.mvc.AbstractController;
public class AppController extends AbstractController{ }
Здесь нам нужно реализовать абстрактный метод следующим образом:
protected modelandview handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { return null; }