Я делаю следующий запрос от клиента:
/search/hello%2Fthere/
где критерий поиска "привет/там" был URLencoded.
На сервере я пытаюсь соответствовать этому URL с помощью следующего отображения запроса:
@RequestMapping("/search/{searchTerm}/")
public Map searchWithSearchTerm(@PathVariable String searchTerm) {
// more code here
}
Но я получаю ошибку 404 на сервере, должном, у меня нет соответствия для URL. Я заметил, что URL декодируется, прежде чем Spring получает его. Поэтому пытается соответствовать/search/hello/there, который не имеет никакого соответствия.
Я нашел Jira связанным с этой проблемой здесь: http://jira.springframework.org/browse/SPR-6780.But, который я все еще не знаю, как решить мою проблему.
Какие-либо идеи?
Спасибо
Нет хороших способов сделать это (без обращения к HttpServletResponse
). Вы можете сделать что-то вроде этого:
@RequestMapping("/search/**")
public Map searchWithSearchTerm(HttpServletRequest request) {
// Don't repeat a pattern
String pattern = (String)
request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);
String searchTerm = new AntPathMatcher().extractPathWithinPattern(pattern,
request.getServletPath());
...
}