Нет адаптера для обработчика в Spring MVC

У меня проблема с простым контроллером spring mvc, написанным в scala:

@Controller
class HelloWorldController {
 implicit def sessionFactory2Session(sf: SessionFactory) = sf.getCurrentSes
 @Autowired
 var sessionFactory: SessionFactory = null
 @Transactional 
 @RequestMapping(value=Array("/hello.html"),method = Array(RequestMethod.GET,RequestMethod.POST))
 def showHello = {
 val document = new CustomDocument("name","custom")
 sessionFactory.save(document)
 sessionFactory.flush
 "helloPage"
 }
}

Когда я попытался получить доступ к /hello.html, я получил исключение:

javax.servlet.ServletException: No adapter for handler: Does your handler implement a supported interface like Controller?
at org.springframework.web.servlet.DispatcherServlet.getHandlerAdapter(DispatcherServlet.java:951)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:758)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:717)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)

Но когда я удалил @Transactional аннотацию - все работает!!. spring не удается найти сопоставление запросов с двумя аннотациями? Мой фрагмент applicationContext.xml:

<bean id="openSessionInViewInterceptor">
 <property name="sessionFactory" ref="sessionFactory">
 </property></bean>
 <bean>
 <property name="interceptors">
 
 </property>
 <property name="alwaysUseFullPath" value="true">
 </property></bean>
<context:component-scan base-package="scala.hibernate">
<bean id="viewResolver">
 <property name="viewClass" value="org.springframework.web.servlet.view.JstlView">
 <property name="prefix" value="/WEB-INF/jsp/">
 <property name="suffix" value=".jsp">
 </property></property></property></bean>
 <!-- for transaction -->
 <bean id="transactionManager">
 <property name="sessionFactory" ref="sessionFactory">
 <property name="dataSource" ref="dataSource">
 </property></property></bean>
 </context:component-scan>

ИЗМЕНИТЬ

Транзакционный аспект применяется с использованием динамического прокси-сервера и предотвращает доступ к MVC spring MVC для аннотаций @RequestMapping в целевом классе Решение:

2 ответа

Попробуйте добавить к вашему applicationContext.xml и посмотреть, устраняет ли это проблему.


объявить следующее bean. это должно решить проблему

обновит вас, как только узнает основную причину.

licensed under cc by-sa 3.0 with attribution.