2017-10-18 58 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沒有按「T。我已經閱讀了很多關於這個問題的文章,但是我找不到解決我的問題和配置的問題。我嘗試了使用Tomcat連接器URIEncoding,但它也不起作用。

我注意到,在我的characterEncodingFilter的配置中,我缺少URL映射,必須是/*,但我不知道如何設置它。

如果你認爲你對我的配置類型有一些解決方案,或者你可以給我推薦另一個類似的配置並解釋它是如何工作的,我將非常感激。

預先感謝您。

回答

0

我找到解決的辦法是Tomcat的設置連接設置爲URIEncoding="UTF-8",然後在我的控制器使用URL編碼器和解碼器是這樣的:

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