Весна 3.1.RC1 и PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE - PullRequest
1 голос
/ 04 ноября 2011

Опубликовано в весеннем форуме без ответа.

У меня есть следующий фрагмент кода (из здесь ), который является частью моего домашнего проекта .

@Controller
@RequestMapping("/browse")
public class MediaBrowser {
   ...

    @RequestMapping("/**")
    public final ModelAndView listContents(final HttpServletRequest request) {

        String folder = (String) request.getAttribute(
                HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
                ...
    }

Я получаю доступ к следующемуurl:

http://localhost:8080/myapp/browse

  • Весной 3.0.6.RELEASE я получил переменную folder как null, которая является ожидаемым значением.
  • Весной 3.1.RC1 переменная folder равна /browse.

Это ошибка или что-то изменилось в spring-3.1?

Ответы [ 2 ]

3 голосов
/ 25 апреля 2012

Как сказал скаффман, вы, вероятно, не должны использовать PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE. Взгляните на Как сопоставить Spring @RequestMapping с @pathVariable, содержащим "/"? для примера использования AntPathMatcher для выполнения того, что вы пытаетесь

3 голосов
/ 04 ноября 2011

Это очень похоже на внутреннюю деталь реализации фреймворка, на которую не следует полагаться.

Javadoc для PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE говорит:

Примечание. Этот атрибут необязательно должен поддерживаться всеми реализациями HandlerMapping. Основанные на URL HandlerMappings обычно поддерживают это, но обработчики не обязательно должны ожидать, что этот атрибут запроса будет присутствовать во всех сценариях.

Я бы не удивился, если бы поведение немного изменилось между 3,0 и 3,1.

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