2011-09-13 73 views
2

我有一个控制器在我的web.xml文件中建立:如何在Spring MVC servlet映射URL中使用通配符?

<servlet> 
    <servlet-name>controller</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>controller</servlet-name> 
    <url-pattern>/console/index</url-pattern> 
</servlet-mapping> 

并在控制器servlet.xml中定义的匹配豆:

<bean name="/console/index" class="com.package.OverviewController"/> 

哪个正确的工作 - 当我拿到“/appName/console/index“,它的行为与我预期的相同。但是,当我修改web.xml中的:

<servlet> 
    <servlet-name>controller</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>controller</servlet-name> 
    <url-pattern>/console/*</url-pattern> 
</servlet-mapping> 

它不再起作用,让我有以下异常:

WARN (org.springframework.web.servlet.PageNotFound) - No mapping for [/appName/console/index] in DispatcherServlet with name 'controller' 

所以我的问题是我如何使用通配符在servlet映射,所以不同的URL都通过一个DispatcherServlet,但可能会转到几个控制器bean之一?

仅供参考:我被困在Spring 2.0上,因为它是一个在政府中使用的既定应用程序。

回答

4

当您在<url-pattern>中使用通配符时,默认情况下控制器名称对应于模式的通配符部分。

因此,您可以将控制器重命名为/index,或将HandlerMappingalwaysUseFullPath属性设置为true

+0

Awesomesauce,欢呼队友:D – Sophistifunk