Есть ли способ получить полное значение пути после requestMapping
@PathVariable
анализа значений?
То есть:
/{id}/{restOfTheUrl}
должен быть в состоянии разобрать /1/dir1/dir2/file.html
в id=1
иrestOfTheUrl=/dir1/dir2/file.html
Любые идеи были бы хорошы.
spring
spring-mvc
request-mapping
Весенняя обезьяна
источник
источник
restOfTheUrl
будет весь путь, а не только оставшаяся часть, захваченная**
Только что обнаружил эту проблему, соответствующую моей проблеме. Используя константы HandlerMapping, я написал небольшую утилиту для этой цели:
источник
Это было здесь довольно давно, но я публикую это. Может быть полезным для кого-то.
источник
Основываясь на уже отличном ответе Фабьена Крубы , я подумал, что было бы неплохо, если бы
**
часть URL-адреса могла быть указана в качестве параметра для метода контроллера через аннотацию способом, аналогичным@RequestParam
и@PathVariable
, а не всегда с использованием служебного метода который явно требовалHttpServletRequest
. Итак, вот пример того, как это можно реализовать. Надеюсь, кому-то это пригодится.Создайте аннотацию вместе с преобразователем аргументов:
Зарегистрируйте преобразователь аргументов метода:
Используйте аннотацию в методах обработчика контроллера, чтобы иметь легкий доступ к
**
части URL:источник
Вам нужно использовать встроенные
pathMatcher
:источник
Я использовал Tuckey URLRewriteFilter для обработки элементов пути, содержащих символы '/', поскольку я не думаю, что Spring 3 MVC еще поддерживает их.
http://www.tuckey.org/
Вы помещаете этот фильтр в свое приложение и предоставляете файл конфигурации XML. В этом файле вы предоставляете правила перезаписи, которые можно использовать для преобразования элементов пути, содержащих символы '/', в параметры запроса, с которыми Spring MVC может правильно справиться с помощью @RequestParam.
WEB-INF / web.xml:
WEB-INF / urlrewrite.xml:
Контроллер метод:
источник
Да,
restOfTheUrl
он не возвращает только требуемое значение, но мы можем получить значение, используяUriTemplate
сопоставление.Я решил проблему, поэтому вот рабочее решение проблемы:
источник
Вот как я это сделал. Вы можете видеть, как я конвертирую запрошенныйURI в путь к файловой системе (о чем этот вопрос SO). Бонус: а также как ответить файлом.
источник
источник
У меня похожая проблема, и я решил так:
Обратите внимание, что
req.getPathInfo()
будет возвращен полный путь (с{siteCode}
и{fileName}.{fileExtension}
), поэтому вам придется обрабатывать удобно.источник