Spring MVC обработчик отображения по умолчанию - PullRequest
4 голосов
/ 15 февраля 2011

В основном, используя Spring MVC, я пытаюсь создать контроллер маршрутизатора, который будет принимать любой URL, который еще не был обработан другим контроллером, и направлять его на соответствующий ресурс или перенаправлять поисковый запрос, если ни один ресурс не можетнайденный.Использование @RequestMapping(value="/{qry}", method = RequestMethod.GET) было успешным при получении запросов, которые еще не были получены другими моими контроллерами (это, кажется, работает, сначала проверяя наиболее специфические отображения), а затем я мог делать любую переадресацию, которая мне была нужна.Однако, как только я добавлю «/» в запросе, отображение прерывается и возвращает 404.

Другими словами, "/some-long-path-or-something" правильно отображается на этот универсальный контроллер, но "/some/other/path"(который не сопоставляется ни с каким другим контроллером) не перехватывается моим универсальным устройством.

Как это можно реализовать?Я прочитал несколько вещей о перехватчиках и обработчиках по умолчанию, но безуспешно в поиске решения.

Спасибо за любые предложения!

Ответы [ 2 ]

5 голосов
/ 15 февраля 2011

Из коробки Spring автоматически регистрирует компонент DefaultAnnotationHandlerMapping, который сопоставляет запросы к контроллерам с помощью аннотаций. Его поведение по умолчанию хорошо в большинстве ситуаций.

Если вы объявите свой собственный DefaultAnnotationHandlerMapping в контексте, он переопределит свойство по умолчанию и позволит вам установить его свойство defaultHandler, которое будет использоваться, когда ни один из явных обработчиков не будет совпадать. Просто добавьте контроллер "catch-all" в это свойство, и Bob's Your Uncle.

3 голосов
/ 15 февраля 2011

Почему бы просто не поймать 404 и не справиться с этим соответствующим образом?Если я не ошибаюсь, я думаю, что это то, что вы пытаетесь достичь.

Вы можете поместить это в ваш web.xml для обработки 404:

<error-page>
    <error-code>404</error-code>
    <location>/yourHandlerPage</location>
</error-page>  

Я что-то упустилздесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...