2017-10-18 11 views
0

私は単語システムで検索を開発しようとしています。私は自分の言葉を入力して入力すると、localhost:8080/Project/search/wordのようなリンクに結果が見つかったページにリダイレクトされ、すべて正常に機能します。Spring MVC:@PathVariableはキリル文字では機能しません

しかし、私はキリル語(「дума」)を検索しようとすると、それが何も見つかりません。 URLで 'дума' を提示しているが、Javaデバッガコンソールに私のWebAppInitializerだことдума

???????°として示し

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}; 
} 
} 

コントローラー:

@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 cyrllicと正常に動作しますが、@PathVariable doesnの't。私はこの問題に関する多くの記事を読んでおり、私の問題と私の構成の解決策を見つけることができませんでした。私はTomcatコネクタURIEncodingを試しましたが、どちらもうまくいきません。

characterEncodingFilterの設定で、/*になっている必要があるURLマッピングがありませんが、設定方法はわかりません。

あなたが設定の私のタイプのためのいくつかのソリューションを持っているか、あなたは私に別の同様のものを提案し、それは私は非常に感謝するでしょうどのように動作するかを説明できると考えられる場合。

ありがとうございます。私が見つけた

答えて

0

ソリューションは、次のようにURLのエンコーダとデコーダを使用するためにURIEncoding="UTF-8"にTomcatの設定コネクタを設定し、私のコントローラにすることです:

String decodedWord = URLDecoder.decode(word, "UTF-8"); 
関連する問題