2016-03-26 27 views
2

我hava i18n,但經驗問題與俄羅斯信件。我有問號?????而不是文字。配置:春季i18n問號而不是文字

@Bean 
public LocaleResolver localeResolver(){ 
    CookieLocaleResolver resolver = new CookieLocaleResolver(); 
    resolver.setDefaultLocale(new Locale("ru")); 
    resolver.setCookieName("locale"); 
    resolver.setCookieMaxAge(60 * 60 * 24 * 365 * 10); 
    return resolver; 
} 

@Bean 
public LocaleChangeInterceptor localeChangeInterceptor() { 
    LocaleChangeInterceptor changeInterceptor = new LocaleChangeInterceptor(); 
    changeInterceptor.setParamName("lang"); 
    return changeInterceptor; 
} 

@Bean 
public MessageSource messageSource() { 
    ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); 
    messageSource.setBasename("classpath:/i18n/messages"); 
    messageSource.setDefaultEncoding("UTF-8"); 
    return messageSource; 
} 

@Override 
public void addInterceptors(InterceptorRegistry registry) { 
    registry.addInterceptor(localeChangeInterceptor()); 
} 

另外我正在使用Thymeleaf。

<h1 th:text="#{message}"></h1> 
+0

僅適用於來自消息源的俄語字母嗎?你能看到頁面中的俄文字母嗎? –

+0

@KenBekov是的,僅適用於來自消息源的字母。是的,我可以 –

+0

這是可能的你保存的消息文件編碼錯誤。檢查包含以utf-8編碼保存的俄語消息的文件。 –

回答

0

只是一個猜測:在「addInterceptor」你自己手動構建LocaleChangeInterceptor。如果這個類依賴於其他Spring bean(如MessageSource),那麼它們不會被注入。找到一種方法讓Spring實例化LocaleChangeInterceptor(例如,通過使用應用程序上下文的各種getBean()之一)。

+0

不幸的是它不工作 –