处理程序exception没有适配器

我正在开发一个使用spring mvc框架的web应用程序。 我想同时注释和基于beanName的url映射。

我在我的上下文文件中有以下configuration

<mvc:annotation-driven /> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> 

我基于注释的控制器工作正常,但基于beanNamed的URL映射抛出exception“没有适配器的处理程序”。

我在这里做错了什么?

谢谢

默认情况下,spring mvc定义了3个不同的请求处理适配器,它们是

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

所以你不需要在你的上下文文件中定义它们,但是如果你在上下文文件中定义了至less一个处理器适配器,spring将不会创build默认的适配器。

在你的configuration中你使用的是<mvc:annotation-driven /> ,根据这个 spring文档,这将导致上下文同时定义DefaultAnnotationHandlerMappingAnnotationMethodHandlerAdapter 。 由于我们在上下文定义中创build了AnnotationMethodHandlerAdapter ,因此spring将不会创build另外两个handlerAdapter。 这就是为什么你会得到这个例外。

beanNameUrlMapping需要handlerAdapter SimpleControllerHandlerAdapter

要解决这个exception,你可以简单地在你的上下文中创build一个types为“SimpleControllerHandlerAdapter”的新bean。

 <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"> </bean> 

当我试图将spring MVC 2.5与spring web flow集成时,同样的事情发生在我身上。 对于webflow,我在configuration文件中给了FlowHandlerdAdapter,但没有给MVC。 因此,如上所述,在这种情况下,我们需要定义一个types为simplecontrollerhandleradapter的BEAN来解决这个问题。