Java ADF中只有一个类的自定义ResourceBundle
由于我的项目的需求,我实现了一个定制的java ResourceBundle类,用于从web.xml中配置的目录获取资源数据。 我的意图是在项目中只一个ResourceBundle类,将来添加的任何资源和语言都可以完成,而无需重新部署整个项目。 例如:MainBundle.javaJava ADF中只有一个类的自定义ResourceBundle,java,locale,oracle-adf,jdeveloper,resourcebundle,Java,Locale,Oracle Adf,Jdeveloper,Resourcebundle,由于我的项目的需求,我实现了一个定制的java ResourceBundle类,用于从web.xml中配置的目录获取资源数据。 我的意图是在项目中只一个ResourceBundle类,将来添加的任何资源和语言都可以完成,而无需重新部署整个项目。 例如:MainBundle.java public MainBundle() { super(); this.locale = ADFContext.getCurrent().getLocale(); readBundle();
public MainBundle() {
super();
this.locale = ADFContext.getCurrent().getLocale();
readBundle();
}
public MainBundle(Locale locale) {
super();
this.locale = locale;
readBundle();
}
private void readBundle() {
bundleFileName = baseBundleName + "_" + locale.toString();
// do some file reading here
}
我已经实现了ResourceBundle类,以根据当前区域设置加载正确的语言。但是,如果我只有一个ResourceBundle类,当用户登录时,所有其他并发用户的区域设置都会更改为该用户的区域设置,从而更改其语言。例如:一位英语用户正在使用我的网站。一位法国用户登录,而这位英国用户突然被迫用法语使用该网站
为了解决这个问题,我必须为每个语言环境创建一个类,扩展MainBundle类,例如MainBundle\u en\u US、MainBundle\u fr等。这些类只在其构造函数中包含super()调用,仅此而已。
但是,这违背了添加新语言时不必修改项目的目的
我的问题是:
我怎样才能绕过这个问题,而只拥有一个资源包类呢
是否有任何方法可以实现我想要的,即在添加新语言时不必修改项目?不要从ResourceBundle类扩展您的CALS并实现您自己的本地化/国际化框架,那么您将完全控制您的设计方法 嗨,欢迎来到Stack Overflow!谢谢你的回答,不过,它有点未完成。你能提供一些例子,也许是一些带解释的代码吗?有关更多详细信息,请参阅。