Проблемы с отображением URL в Spring 3.0

Я тестирую обновление с Spring 2.0 до Spring 3.0.5 на Tomcat, и у меня возникает проблема, связанная с разным поведением сопоставления для URL-адресов, которые имеют конечную косую черту и идентичный URL-адрес без конечной косой черты.

Например, в моей реализации Spring 2.0 следующие URL-адреса будут отображаться на один и тот же класс контроллера в соответствии с нижеприведенной конфигурацией XML Spring MVC:

  • /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>

Тем не менее, весной 3.0.5, /search/categories/ (обратите внимание на косую черту) не отображается на контроллер. Только /search/categories (без косой черты) отображается.

Я знаю, что конфигурация XML устарела, и, к сожалению, я пока не могу от нее отказаться. Но я не уверен, почему в Spring 3.0.5 появилось новое поведение для URL с конечными косыми чертами. Есть предложения или мысли по поводу возможного исправления? Нужно ли мне идти настолько далеко, чтобы реализовать условие перезаписи Apache, чтобы удалить косые черты в URL?

Спасибо за вашу помощь!

1 ответ

Я бы сказал, что самое простое решение - создать BeanPostProcessor это удаляет косые черты.

Или лучше BeanFactoryPostProcessor Таким образом, вы можете редактировать определения бинов, а не сами бины.

Другие вопросы по тегам