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 に対して新しい動作が行われる理由がわかりません。可能な修正に関する提案や考えはありますか? URL の末尾のスラッシュを削除するには、Apache Rewrite 条件を実装する必要がありますか?

ご協力いただきありがとうございます!

4

1 に答える 1

0

最も簡単な解決策は、末尾のスラッシュを削除する a を作成するBeanPostProcessorことだと思います。

または、BeanFactoryPostProcessor実際の Bean ではなく、Bean 定義を編集できるようにすることをお勧めします。

于 2011-03-21T20:59:07.547 に答える