кодирование переменных пути Spring mvc - PullRequest
3 голосов
/ 08 марта 2012

Я использую пружинный MVC. Я занимаюсь серфингом:

http://localhost:8080/services/cities/פת.html

обратите внимание, что פת на иврите, а не на английском.
Мой контроллер:

@RequestMapping(value="/services/cities/{name}", method=RequestMethod.GET)
public @ResponseBody List<SelectElement> getCities(@PathVariable String name) {
    List<SelectElement> elements=null;
    ...
    ...
    return elements;
}

Проблема в том, что контроллер получает פת, а не правильные символы.
Как я могу это исправить?

Даже если я зайду на: http://localhost:8080/services/cities/%D7%A4%D7%AA.html У меня возникнет эта проблема.

Ответы [ 3 ]

5 голосов
/ 08 марта 2012

Если вы используете tomcat, вам нужно указать кодировку URL для запросов, добавив URIEncoding="UTF-8" на <Connector> в конфигурации Tomcat server.xml, как описано здесь:

http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q8

1 голос
/ 08 марта 2012

Здесь у вас есть интересная документация о запросах кодирования в Tomcat

Что-то вроде CharacterEncodingFilter будет работать только в запросах POST.Вам необходимо изменить конфигурацию Tomcat (или другого контейнера), чтобы использовать URI, отличный от ISO-8859-1.Но это не будет работать во всех браузерах, это зависит от того, как они кодируют URI.

Поэтому я рекомендую всегда использовать простейших символов, насколько это возможно.Если вы сообщите нам, чего вы пытаетесь достичь, возможно, мы сможем найти лучшее решение (я полагаю, вам не нужно, чтобы пользователь тоже вводил название города прямо в адресной строке).

0 голосов
/ 08 марта 2012

Использовать фильтр CharacterEncodingFilter ...

<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
</init-param>
<init-param>
    <param-name>forceEncoding</param-name>
    <param-value>true</param-value>
</init-param>

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