spring國際化
出現的問題:
ResourceBundle [message] not found for MessageSource: Can't find bundle for base name message, local_zh
解決:
使用 org.springframework.context.support.ResourceBundleMessageSource 配置會導緻以上問題出現。
改用 org.springframework.context.support.ReloadableResourceBundleMessageSource。
相關@Bean配置代碼如下:
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("/WEB-INF/messages");
messageSource.setCacheSeconds(10);
return messageSource;
}
messages.properties和messages_zh_CN.properties檔案存放路徑如下圖
這時,若messages_zh_CN.properties檔案中存在中文,啟動WEB應用之後,jsp頁面中文無法正常顯示,出現亂碼。解決方法:
在@Bean中設定setDefaultEncoding, 代碼如下:
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("/WEB-INF/messages");
messageSource.setDefaultEncoding("UTF-8");
messageSource.setCacheSeconds(10);
return messageSource;
}