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