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;
}
本文详细解析了在Spring框架中实现国际化时遇到的资源包找不到及中文乱码问题,并提供了解决方案,包括使用ReloadableResourceBundleMessageSource替代ResourceBundleMessageSource,以及设置正确的编码。
7440

被折叠的 条评论
为什么被折叠?



