Ошибка аннотации Spring MVC "Нет адаптера для обработчика. Реализует ли ваш обработчик поддерживаемый интерфейс, такой как Controller?" - PullRequest
0 голосов
/ 08 июля 2010

У меня есть существующие приложения Spring MVC, написанные на 2.5.

Я хотел использовать новый контроллер аннотаций. Я в некоторой степени вижу, что он действительно гибкий и отвечает моим другим потребностям.

Моя проблема в том, что я не могу смешать их обоих.

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">

    <context:component-scan
            base-package="com.test.web" />

    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

    <!-- Controller Mappings Here -->
    <bean id="homeController" class="com.test.web.HomeController">
        <property name="cacheSeconds" value="120" />
    </bean> 

    //other plain old spring mvc controller

Когда я запускаю свое приложение и попадаю на домашнюю страницу, я получаю ошибку ниже:

javax.servlet.ServletException: нет адаптера для обработчика [com.test.web.HomeController@cca07b]: реализует ли ваш обработчик поддерживаемый интерфейс, такой как Controller?

Я не уверен, но думаю, что что-то противоречит. Это довольно большие приложения Spring MVC, и я не хочу менять те модули, которые уже работали с использованием старого Spring Base Controller.

Моя цель - использовать контроллер аннотаций только для моего нового улучшения.

1 Ответ

3 голосов
/ 08 июля 2010

Вам не нужно объявлять DefaultAnnotationHandlerMapping и AnnotationMethodHandlerAdapter.В контексте они зарегистрированы по умолчанию вместе с адаптерами для контроллеров старого стиля.

Когда вы объявляете их в явном виде, как это, стандартные значения удаляются, и контекст будет поддерживать только те, которые вы объявите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...