2015-04-14 3 views
1

У меня проблема с передачей параметров в springMVC.Передача параметров, отличных от английского, весной MVC

@RequestMapping(value = "/", method = RequestMethod.POST) 
    public String homePost(Model model, HttpServletRequest request) { 
     StringBuilder redirect = new StringBuilder(); 
     String para = request.getParameter("keyword"); 

     redirect.append("redirect:/search?" + "cat=0&job="+ para); 
     logger.info("Page called: SEARCH; Called parameter: KEYWORD: " + redirect.toString()); 

     return redirect.toString(); 
} 

В моей консоли, я вижу:

Страница называется: ПОИСК; Названный параметр: СЛОВО: редиректа:/поиск кота = 0 & работы = лол лол лол

Но мой URL является

http://localhost:8088/search?cat=0&job=lol%20%20%20%20%20lol

Я установил мои все кодировки в " UTF-8 ", и я пытаюсь выполнить поиск из списка с использованием кириллицы, но он продолжает преобразовывать кириллические буквы в пустые места. Я могу искать латинские буквы. Если я пишу в URL вручную, используя кириллические буквы, я также могу выполнить поиск. В консоли, он также показывает

связывают => [% лол лол%]

Спасибо.

P.S Даже если я не использовал StringBuilder, у меня такая же проблема. P.S.S Мой web.xml имеет

<filter> 
    <filter-name>encodingFilter</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> 
</filter> 
<filter-mapping> 
    <filter-name>encodingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
+0

ли этот вопрос помощи? http://stackoverflow.com/questions/19272494/fastest-way-to-encode-cyrillic-letters-for-url –

+0

Вы используете Tomcat? См. «Как изменить параметры интерпретации параметров GET?» в http://wiki.apache.org/tomcat/FAQ/CharacterEncoding –

ответ

0

Спасибо за ваши ответы. Я решил проблему, и если кто-то заинтересован. Ссылка @Alex была настолько полезна.

@RequestMapping(value = "/", method = RequestMethod.POST) 
    public String homePost(Model model, HttpServletRequest request) throws UnsupportedEncodingException { 
     StringBuilder redirect = new StringBuilder(); 
     String para = request.getParameter("keyword"); 

     redirect.append("redirect:/search/" + URLEncoder.encode(para, "UTF-8")); 
     logger.info("Page called: SEARCH; Called parameter: KEYWORD: " + redirect.toString()); 

     return redirect.toString(); 
    } 

И получить метод:

@RequestMapping(value="/search/{keyword}", method = RequestMethod.GET) 
    public String job(Model model,@PathVariable String keyword) throws UnsupportedEncodingException { 

     String job = URLDecoder.decode(keyword); 
     return null; 
} 
Смежные вопросы