- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在 JBoss AS7 上运行的已部署 WAR 上下文中将 Spring Web 应用程序的 i18n 本地化属性作为 ResourceBundle 对象加载。
这里的原因是我需要将 ResourceBundle 对象作为参数提供给 JasperReports 才能正确编译报告。 JasperReports 使用参数“REPORT_RESOURCE_BUNDLE”通过 str() 函数或 $R{} 表达式绑定(bind)来处理报告中的国际化。此参数唯一接受的类型是 ResourceBundle 对象,因此是我的情况。
我让它在某个时候工作,但似乎 JBoss 保留了属性的陈旧版本,我相信这一点可以通过以下事实得到澄清:在我执行干净的操作后,它无法再使用未修改的代码来定位 ResourceBundle 、打包并重新部署到项目上。
在 Spring 中,我们配置了一个 MessageSource Bean,如下所示,它能够成功加载并使用属性文件作为资源包:
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource ms = new ReloadableResourceBundleMessageSource();
String[] basenames = {"/WEB-INF/classes/messages/i18n/core_messages",
"/WEB-INF/classes/messages/i18n/mui_messages"};
ms.setBasenames(basenames);
return ms;
}
我当前获取 ResourceBundle 对象的实现如下:
public ResourceBundle getBeanResourceBundle() {
Locale fromConfig = DEFAULT_LOCALE;
//Resolve Locale from a configuration service
ClassLoader cl = Thread.currentThread().getContextClassLoader();
return ResourceBundle.getBundle("core_messages", fromConfig, cl);
}
使用 this.getClassLoader() 加载类时遇到问题,然后在我更改为从 Thread.currentThread() 加载后开始工作。然而现在 clean:package:deploy 已经使其无效,并且我有合理的信息向我建议它实际上停止加载新的“core_messages”ResourceBundle 对象许多部署回来,因为明显的键值更改在已部署的应用程序中似乎从未发生更改。/p>
部署的结构是通过 maven 构建的,如下所示:
核心模块打包为 JAR,它是打包为 JBoss 部署的 WAR 的前端模块的依赖项。
具有加载诸如上述方法中的ResourceBundle之类的服务的代码位于Core模块中。最后的 WAR 是前端模块之一,它尝试解析其 WEB-INF/classes/.. 类路径中的文件。
我需要访问什么类加载器才能从适当的类路径加载?
最佳答案
Spring 中的 MessageSourceResourceBundle 类是 ResourceBundle 的实现,它使用 MessageSource 来提供其属性。它可以使用 MessageSource 对象 (Autowired) 和 Locale 进行实例化。 MessageSource 已经处理了我在应用程序中需要的内容,我只需要获取一个可用的 ResourceBundle,它与 Locale 的配合也很好。
public ResourceBundle getBeanResourceBundle() {
Locale fromConfig = DEFAULT_LOCALE;
//Resolve Locale from a configuration service
return new MessageSourceResourceBundle(ms, fromNodeConfig); //replace code in my question
}
关于java - 在Spring中加载ResourceBundle对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8811995/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!