没有适配器处理程序异常

Har*_*ish 38 spring spring-mvc

我正在使用spring mvc框架开发一个Web应用程序.我想要注释和基于beanName的url映射.

我在上下文文件中有以下配置

<mvc:annotation-driven />

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
Run Code Online (Sandbox Code Playgroud)

我的基于注释的控制器工作正常,但基于beanNamed的url映射抛出异常"没有适配器处理程序".

我在这做错了什么?

谢谢

Aru*_*hny 79

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

org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
Run Code Online (Sandbox Code Playgroud)

因此,您无需在上下文文件中定义它们,但如果在上下文文件中定义至少一个处理程序适配器,则spring将不会创建默认适配器.

在您正在使用的配置中<mvc:annotation-driven />,根据今年春季文档,这将导致上下文定义DefaultAnnotationHandlerMappingAnnotationMethodHandlerAdapter.由于我们AnnotationMethodHandlerAdapter在上下文中创建了spring,因此spring不会创建另外两个handlerAdapters.这就是你得到上述例外的原因.

beanNameUrlMapping需要handlerAdapter SimpleControllerHandlerAdapter.

要解决此异常,您只需在上下文中创建一个类型为"SimpleControllerHandlerAdapter"的新bean.

<bean
    class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter">
</bean>
Run Code Online (Sandbox Code Playgroud)