2

我正在 Tomcat 上测试从 Spring 2.0 到 Spring 3.0.5 的升级,并且遇到了一个问题,即带有斜杠的 URL 与没有斜杠的相同 URL 的映射行为不同。

例如,在我的 Spring 2.0 实现中,根据下面的 Spring MVC XML 配置,以下 URL 都将映射到同一个控制器类:

  • /search/categories
  • /search/categories/

<bean id="searchMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="order" value="1"/>
    <property name="mappings">
        <props>
            <prop key="/search/categories">categoriesController</prop>
        </props>
    </property>
</bean>

但是,在 Spring 3.0.5 中,/search/categories/(注意尾部斜杠)没有映射到控制器。只有/search/categories(没有尾部斜杠)被映射。

我知道 XML 配置在未来已被弃用,不幸的是,我还无法摆脱它。但我不确定为什么在 Spring 3.0.5 中,带有斜杠的 URL 会有新的行为。关于可能的修复有什么建议或想法吗?我是否需要实现 Apache 重写条件以删除 URL 上的尾部斜杠?

谢谢你的帮助!

4

1 回答 1

0

我想说最简单的解决方案是创建一个BeanPostProcessor修剪尾部斜线的。

或者,更好的是 a BeanFactoryPostProcessor,这样您就可以编辑 bean 定义,而不是实际的 bean。

于 2011-03-21T20:59:07.547 回答