Заказал RequestMapping весной MVC - PullRequest
9 голосов
/ 24 февраля 2010

Я работаю над проектом Spring MVC с использованием Annotated Controller. Одна вещь, которая меня интересует, - это порядок обработки инструкции @RequestMapping. Например, я хочу, чтобы все /green/basic/welcome были сопоставлены с GreenController.welcome() но green/{treeId}/{treeName} должен быть сопоставлен с GreenController.viewTree(treeId, treeName).

Полагаю, мне нужно указать два @RequestMapping с @RequestMapping из /green/basic/welcome, которые будут обработаны первыми, чтобы он не был интерпретатором как вызов GreenControllerviewTree("basic", "welcome").

Можете ли вы, ребята, направить меня в этом?

1 Ответ

8 голосов
/ 28 февраля 2012

Точное совпадение для RequestMapping будет иметь приоритет над совпадением с PathVariable. Таким образом, у вас будет два сопоставления запроса, как вы указали. Один для обработки определенного URL, а версия переменной будет перехватывать все остальное. Spring проверяет прямые совпадения путей перед проверкой совпадений переменных пути, поэтому порядок не имеет значения, если у вас нет двух сопоставлений запросов с одинаковым количеством переменных пути, которые могут выдать IllegalStateException

Проверьте источник org.springframework.web.servlet.handler.AbstractHandlerMethodMapping для уточнения. Обрабатывается в lookupHandlerMethod().

Чтобы определить наилучшее совпадение двух RequestMapping с, которые не являются точными совпадениями, используется метод compareTo () RequestMappingInfo.

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