Java ADF中只有一个类的自定义ResourceBundle

Java 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();

由于我的项目的需求,我实现了一个定制的java ResourceBundle类,用于从web.xml中配置的目录获取资源数据。 我的意图是在项目中只一个ResourceBundle类,将来添加的任何资源和语言都可以完成,而无需重新部署整个项目。 例如:MainBundle.java

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!谢谢你的回答,不过,它有点未完成。你能提供一些例子,也许是一些带解释的代码吗?有关更多详细信息,请参阅。