Обработка специальных символов в параметрах записи для Spring-mvc - PullRequest
4 голосов
/ 31 августа 2011

У меня есть приложение, использующее spring-mvc 3.0.Контроллеры конфигурируются следующим образом:

@RequestMapping(value = "/update", method = RequestMethod.POST)
public ModelAndView updateValues(
 @RequestParam("einvoiceId") String id){
...}

При публикации идентификатора, содержащего специальные символы (в данном случае pipe |), URL-кодированный с UTF-8 (id = 000025D26A01% 7C2014174), идентификатор строкисодержат% 7C.Я ожидал, что spring-mvc расшифрует этот параметр.Я знаю, что я могу решить эту проблему с помощью

java.net.URLDecoder.decode()

, но, поскольку у меня большое количество контроллеров, я бы хотел, чтобы это делалось автоматически средой.Я настроил соединитель Tomcat с URIEncoding="UTF-8" и настроил CharacterEncodingFilter, но, насколько я понимаю, это повлияет только на запросы GET.Любые идеи о том, как я могу заставить spring-mvc url декодировать параметры моего поста?

Ответы [ 2 ]

1 голос
/ 31 августа 2011

http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q3 На этой странице написано, что CharacterEncodingFilter может изменять параметры POST

0 голосов
/ 03 июля 2013

Полагаю, вы столкнулись с той же проблемой, что и я.Попробуйте использовать @PathVariable вместо @RequestParam.

@PathVariable is to obtain some placeholder from the uri (Spring call it an URI Template) — see Spring Reference Chapter 16.3.2.2 URI Template Patterns

Если вы это сделаете, вам придется изменить свой URL-адрес и не указывать параметр 'id'.Просто "/ update / 000025D26A01% 7C2014174".Дополнительную информацию можно найти, где я нашел решение для моей проблемы @ RequestParam vs @ PathVariable

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