2017-10-18 6 views
0

Ich versuche, Suche nach Wort System zu entwickeln. Ich habe eine Eingabe, wo ich mein Wort eintippe und übergebe, dass mich auf die Seite mit gefundenen Ergebnissen zu einem Link wie diesem umleitet localhost:8080/Project/search/word und alles funktioniert gut.Spring MVC: @PathVariable funktioniert nicht mit kyrillischen

Aber wenn ich versuche, nach einem kyrillischen Wort ('дума') zu suchen, findet es nichts. In der URL wird 'дума' präsentiert, aber in der Java-Debugger-Konsole zeigt дума als ???????°

Das ist mein WebAppInitializer ist

public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

protected Class<?>[] getRootConfigClasses() { 
    return new Class[]{ WebConfig.class }; 
} 

protected Class<?>[] getServletConfigClasses() { 
    return null; 
} 

protected String[] getServletMappings() { 
    return new String[]{ "/" }; 
} 

protected Filter[] getServletFilters(HttpServletRequest request) { 
    CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); 
    characterEncodingFilter.setForceEncoding(true); 
    characterEncodingFilter.setEncoding("UTF-8"); 
    return new Filter[] { characterEncodingFilter}; 
} 
} 

Controller:

@RequestMapping(value = {"/search/word/{word}", "/search/word/{word}/page/{page}"}, method = RequestMethod.GET, 
     produces = "text/plain;charset=UTF-8") 
public ModelAndView getSearchVideoByTitlePage(@PathVariable("word") String word, 
     @PathVariable(value = "page", required = false) Integer page, HttpServletRequest request, 
     HttpSession session) 

@RequestParam funktioniert mit cyrllic, aber @PathVariable doesn t. Ich habe viele Artikel über dieses Problem gelesen und konnte keine Lösung für mein Problem und meine Konfiguration finden. Ich habe versucht, mit Tomcat-Anschluss URIncoding, aber es funktioniert auch nicht.

Ich habe festgestellt, dass ich in meiner Konfiguration für die characterEncodingFilter Ich fehlt URL-Mapping, die /* sein muss, aber ich weiß nicht, wie Sie es einstellen.

Wenn Sie denken, Sie haben eine Lösung für meine Art der Konfiguration oder Sie können mir eine andere ähnliche vorschlagen und erklären, wie es funktioniert, werde ich sehr dankbar sein.

Vielen Dank im Voraus.

Antwort

0

Die Lösung, die ich gefunden ist, den Tomcat-Einstellungen Anschluss an URIEncoding="UTF-8", zu setzen und dann in meinem Controller-URL Encoder und Decoder wie folgt zu verwenden:

String decodedWord = URLDecoder.decode(word, "UTF-8"); 
Verwandte Themen