【发布时间】:2011-12-30 11:29:51
【问题描述】:
我正在尝试按照示例从 DB 中为 JSF 应用程序加载资源包:internationalization in JSF with ResourceBundle entries which are loaded from database
对于测试,我编写了 getItSomehow() 代码,就像创建 HashMap 并用键 "hello_world" 和值 "["+locale+"]"+"hello world" 填充它
当我在 Glassfish3 上部署该示例时,它运行良好。 但是当我使用 WebSphere AS 7 时,jsf 页面只有第一次才能正确显示。在其他浏览器中打开 jsf 页面(选择其他首选语言)我总是在首次运行的语言环境中收到响应。
调试的时候发现ResourceBundle.java的实现有区别:Glassfish使用JDK1.6的rt.jar中提供的这个类;但是 WebSphere 在 java.util.jar 中有这个类
从 ApplicationResourceBundle.getResourceBundle() 调用的 ResourceBundle(WebSphere)调用 handleGetBundle() 并最终调用 my.i18n.DbResourceBundle$DBControl.newBundle() 。 使用不同的语言环境调用第二次(以及更长时间)它不会调用我的覆盖,而只会返回为第一个语言环境创建的相同包。
问题:是否可以编写部署在 WebSphere AS 7.0.07 上的可内部化的 jsf Web 应用程序,而不是挖掘或侵入 AS 的内部?
(环境:Windows XP、WebSphere AS 7.0.0.7、jdk1.6.0_24、jsf 2.1.4)
【问题讨论】:
标签: internationalization jsf-2 resourcebundle websphere-7