处理程序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文档,这将导致上下文同时定义DefaultAnnotationHandlerMapping
和AnnotationMethodHandlerAdapter
。 由于我们在上下文定义中创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来解决这个问题。
- 在Spring 3中将属性添加到所有控制器的模型中
- Spring XmlBeanFactory已弃用
- IntelliJ不会终止使用Gradle构buildSpring Boot应用程序
- Spring框架中的applicationContext.xml和spring-servlet.xml之间的区别
- Spring 3.1inheritance的Hibernate 4exception
- 如何创build用于Spring安全expression式语言注释的自定义方法
- 找不到具有URI的HTTP请求的映射…在名称为的DispatcherServlet中
- 在序列化过程中只使用@JsonIgnore,而不是反序列化
- 如何用Spring的JDBCTemplate有效地执行IN()SQL查询?