当前位置: 首页 > wzjs >正文

闵行区做网站房管局

闵行区做网站,房管局,阿里云建设网站能干嘛,wordpress连接mysql8前言 在写项目配置国际化的时候,因为我有多个模块项目:common、admin、image等,各自模块都有i18n的文件。 但在配置MessageSource的时候发现只能加载一个文件,其他文件被丢弃了,导致code会找不到。 后面在stackoverf…

前言  

      在写项目配置国际化的时候,因为我有多个模块项目:common、admin、image等,各自模块都有i18n的文件。

      但在配置MessageSource的时候发现只能加载一个文件,其他文件被丢弃了,导致code会找不到。

      后面在stackoverflow中找到了相关文章对其进行解释了:

https://stackoverflow.com/questions/3888832/does-spring-messagesource-support-multiple-class-path

1、原版写法(错误):

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

原因解释: 

         classpath* 语法是 Spring 的一种机制,它允许代码为给定路径加载多个资源。非常方便。然而, ResourceBundleMessageSource 使用标准的 java.util.ResourceBundle 来加载资源,这是一种更简单、更简单的机制,它将加载给定路径的第一个资源,并忽略其他所有内容。

2、解决方法

         自定义一个类SmReloadableResourceBundleMessageSource,继承ResourceBundleMessageSource 类,去重写 refreshProperties 方法,该方法支持两种类型的 basenames(classpath*: 和 /WEB-INF/)。

public class SmReloadableResourceBundleMessageSource extends ReloadableResourceBundleMessageSource {private static final String PROPERTIES_SUFFIX = ".properties";private PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();@Overrideprotected PropertiesHolder refreshProperties(String filename, PropertiesHolder propHolder) {if (filename.startsWith(PathMatchingResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX)) {return refreshClassPathProperties(filename, propHolder);} else {return super.refreshProperties(filename, propHolder);}}private PropertiesHolder refreshClassPathProperties(String filename, PropertiesHolder propHolder) {Properties properties = new Properties();long lastModified = -1;try {Resource[] resources = resolver.getResources(filename + PROPERTIES_SUFFIX);for (Resource resource : resources) {String sourcePath = resource.getURI().toString().replace(PROPERTIES_SUFFIX, "");PropertiesHolder holder = super.refreshProperties(sourcePath, propHolder);properties.putAll(holder.getProperties());if (lastModified < resource.lastModified())lastModified = resource.lastModified();}} catch (IOException ignored) {}return new PropertiesHolder(properties, lastModified);}
}

之后再去替换ReloadableResourceBundleMessageSource 类。

  @Beanpublic MessageSource messageSource() {SmReloadableResourceBundleMessageSource messageSource = new SmReloadableResourceBundleMessageSource();messageSource.setBasenames("classpath*:/i18n/messages");messageSource.setDefaultEncoding("UTF-8");messageSource.setUseCodeAsDefaultMessage(true); // 当找不到key时,返回codereturn messageSource;}

http://www.dtcms.com/wzjs/834158.html

相关文章:

  • 欧美在线做视频网站济南网站优化培训
  • 我想找阿里巴巴做网站推广道路建设网站专题
  • 中国建设银行巴黎分行网站电子商务网站系统建设进度安排
  • 网站如果不备案吗十大接单推广平台
  • 书店网站html模板在原域名给公司建立网站
  • 怎么建立网站卖东西wordpress 多站点 用户
  • 移动网站好处鹰潭建设网站
  • 宝山做手机网站建设域名网站开发有意义吗
  • 青岛英文建站公司网页设计与制作怎么弄
  • php和python酒店网站搜索引擎优化方案
  • 网站做不了301重定向东莞公司注册要多少钱
  • 网站用亚马逊做标题会侵权吗wordpress分类标签
  • 做网站上传资源wordpress 自动登陆
  • 怎么利用网站做cpa推广2008 iis 添加 网站 权限设置
  • 如何自己做视频网站网站开发涉及到缓存吗
  • 福州手机网站建设做自媒体关注的网站
  • 北京做网站公司哪家好深圳公司网站设
  • 苏州网站建设联系电话成立网站有什么要求
  • php网站开发推荐书籍建设互联网站的目的
  • 网站建设合作协议文本企业做网站的注意什么
  • 厦门网站建设价app开发公司十强
  • 重庆颐众达网站我想开个网店不知道怎么入手
  • 给用ps做的网站加div公司简介海报
  • vs2005做的网站转换为2012wordpress图床网站
  • 360网站建设搜索wordpress 小程序框架
  • 中小企业网站优化建设工程教育网官网学员登录
  • 菠菜网站怎样做安全管理咨询师
  • 郑州网站模板网站百度商桥
  • 淘宝做图片的网站wordpress 多页面
  • 北京网站制作与营销培训网站搭建哪家比较好