【发布时间】:2012-03-29 01:14:48
【问题描述】:
我在 JBoss 应用服务器上运行 Spring MVC。
文件:jboss-web.xml:
<jboss-web>
<context-root>/foo/bar/baz</context-root>
</jboss-web>
上下文根定义为 /foo/bar/baz 我无法更改的内容。
文件:web.xml:
<servlet>
<servlet-name>spring-rest</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-rest</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
它已将调度程序 servlet 映射到 url "/"
Java:(控制器)
@RequestMapping(value="/rest/*", method = RequestMethod.POST)
@ResponseBody
public SomeResponse processRequest(@RequestBody SomeRequest someRequest)
{
return someResponse;
}
我正在尝试用这种方法处理请求。
当 Spring 在 JBoss 中加载时,我看到以下内容: [
DefaultAnnotationHandlerMapping] Mapped URL path [/rest/*] onto handler 'MyController'
[DefaultAnnotationHandlerMapping] Mapped URL path [/rest/*.*] onto handler 'MyController'
[DefaultAnnotationHandlerMapping] Mapped URL path [/rest/*/] onto handler 'MyController
'
我尝试访问:http://localhost:8080/foo/bar/baz/rest,我看到的是:
WARN [PageNotFound] 在名为“spring-rest”的 DispatcherServlet 中找不到具有 URI [/foo/bar/baz/rest] 的 HTTP 请求的映射
但是当我在 Java 中将值从“/rest/”更改为“/”时:
@RequestMapping(value="/*", method = RequestMethod.POST)
然后它就可以正常工作了。我该如何解决这个问题?
spring-rest-servlet.xml:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="alwaysUseFullPath" value="true"/>
</bean>
<bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="alwaysUseFullPath" value = "true" />
</bean>
【问题讨论】:
标签: spring-mvc jboss controller