Сопоставление одного и того же URL с разными контроллерами весной на основе параметра запроса - PullRequest
5 голосов
/ 23 июня 2011

Я использую контроллер на основе весенних аннотаций.Я хочу, чтобы мои URL / пользователь / сообщения отображались на некоторый контроллер a, если в противном случае тег параметра запроса присутствует на другом контроллере b.Это необходимо, потому что, когда присутствует тег параметра, тогда могут присутствовать еще некоторые параметры наряду с тем, который я хочу обработать в другом контроллере, чтобы поддерживать чистоту реализации. Есть ли способ сделать это весной.И есть ли другое элегантное решение этой проблемы?

Ответы [ 2 ]

6 голосов
/ 23 июня 2011

Вы можете использовать атрибут params аннотации @RequestMapping для выбора метода контроллера в зависимости от параметров Http.

См. Этот пример:

@RequestMapping(params = "form", method = RequestMethod.GET)
public ModelAndView createForm() {
    ...
}

@RequestMapping(method = RequestMethod.GET)
public ModelAndView list() {
    ...
}

Это стиль REST, который используется Spring ROO: если запрос содержит параметр forms, то используется обработчик createForm, если не используется метод list.

3 голосов
/ 23 июня 2011

Если вы хотите пойти по весеннему маршруту, вы можете проверить упомянутый HandlerInterceptor здесь . Перехватчик может взглянуть на ваш параметр запроса и перенаправить ссылку на что-то еще, что может быть перехвачено другим SimpleUrlMapper.

Другой способ - отправить его одному контроллеру и разрешить контроллеру перейти к другому действию, если параметром запроса является «b».

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