Аргументы контроллера, помеченные Spring 3 MVC PathParameter, удаляют данные после последнего символа '. - PullRequest
1 голос
/ 20 февраля 2010

Экспериментируя с Spring MVC, я заметил, что значения, передаваемые в аргументы контроллера, помеченные @PathVariable, будут содержать все символы из последнего символа '.' на раздетый, если последний символ не является '/'.

Например, с помощью следующего кода:

@RequestMapping("/host/${address})"
public String getHost(@PathVariable String address, Model model) {
    model.addAttribute("host", hostRepository.getHost(address));
    return "host";
}

Если URL-адрес «/host/127.0.0.1», значение address будет «127.0.0». Если URL-адрес «/host/127.0.0.1/», значение address будет «127.0.0.1».

Есть ли где-нибудь, чтобы предотвратить эту зачистку?

Ответы [ 2 ]

2 голосов
/ 20 февраля 2010

В их трекере уже есть множество таких отчетов (например, SPR-5778 ). Но они не исправляют это, поэтому это кажется законным поведением.

Официальный обходной путь - установить useDefaultSuffixPattern = false на DefaultAnnotationHandlerMapping, но у него есть несколько недостатков:

  • Применяется ко всем контроллерам
  • Полностью отключает обработку расширений (например, для ContentNegotiationViewResolver)
  • Это нарушает правило "косая черта не имеет значения"

Более сложные обходные пути используют настраиваемый PathMatcher, как описано здесь .

0 голосов
/ 20 февраля 2010

Очевидно, что это было обработано как расширение файла и удалено. Не уверен, что это ошибка. Я бы заполнил вопрос на их эмитент трекере .

Обновление : пожалуйста, проверьте эту тему, это на самом деле не ошибка, и она может быть решена программно: Попытка создать URL-адреса с множественными точками в части «имени файла» - Spring 3.0 MVC

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