默認情況下,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 />
,根據this spring文檔,這將導致上下文同時定義DefaultAnnotationHandlerMapping
和AnnotationMethodHandlerAdapter
。由於我們在上下文定義中創建了AnnotationMethodHandlerAdapter
,因此spring不會創建其他兩個handlerAdapter。這就是爲什麼你會得到上述例外。
beanNameUrlMapping需要handlerAdapter SimpleControllerHandlerAdapter
。
要解決此異常,您可以簡單地在您的上下文中創建一個類型爲「SimpleControllerHandlerAdapter」的新bean。
<bean
class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter">
</bean>
這是一個簡單的直接答案,很好的解釋:) – 2012-11-05 10:53:17
這並不容易找到。但我最終做到了。優秀的解釋。我添加了註釋支持,並不想同時遷移所有控制器。 – panther 2013-09-24 12:16:30
它通過添加SimpleControllerHandlerAdapter爲我工作正常。謝謝! – Ricardo 2014-06-09 20:31:32