Нет адаптера для исключения обработчика - PullRequest
38 голосов
/ 09 октября 2010

Я занимаюсь разработкой веб-приложения с использованием Spring MVC Framework. Я хочу, чтобы сопоставления URL основывались на аннотациях и beanName.

В моем файле контекста есть следующие конфигурации

<mvc:annotation-driven />

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

Мои контроллеры на основе аннотаций работают нормально, но отображение URL на основе beanNamed вызывает исключение "Нет адаптера для обработчика".

Что я здесь не так делаю?

Спасибо

Ответы [ 2 ]

79 голосов
/ 09 октября 2010

По умолчанию Spring mvc определяет 3 разных адаптера обработчика запросов, они

org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter

Так что вам не нужно определять их в вашем контекстном файле, но если вы определяете хотя бы один адаптер обработчика в своемфайлы контекста, Spring не будет создавать адаптеры по умолчанию.

В вашей конфигурации вы используете <mvc:annotation-driven />, в соответствии с этой документацией Spring это приведет к тому, что контекст определит и DefaultAnnotationHandlerMapping, иAnnotationMethodHandlerAdapter.Поскольку мы создаем AnnotationMethodHandlerAdapter в нашем определении контекста, Spring не будет создавать два других адаптера handler.Вот почему вы получаете указанное исключение.

Для beanNameUrlMapping требуется обработчик adapter SimpleControllerHandlerAdapter.

Чтобы устранить это исключение, вы можете просто создать новый бин типа "SimpleControllerHandlerAdapter" в вашем контексте.

<bean
    class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter">
</bean>
1 голос
/ 20 ноября 2012

То же самое случилось со мной, когда я пытался интегрировать пружинный MVC 2.5 с потоком пружинной ленты. Для веб-потока я дал FlowHandlerdAdapter в файле конфигурации, но не для MVC. Таким образом, как сказано выше, нам нужно определить BEAN типа simplecontrollerhandleradapter, который решит проблему.

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