覆盖资源捆绑包的顺序



在资源包中搜索标签时,如何覆盖Java的顺序?从文档中获取,默认顺序是:

ButtonLabel_fr_CA_UNIX
ButtonLabel_fr_CA
ButtonLabel_fr
ButtonLabel_en_US
ButtonLabel_en
ButtonLabel

然而,我想通过首先采取变体来覆盖这个订单,比如:

ButtonLabel_fr_CA_UNIX
ButtonLabel_en_US_UNIX
ButtonLabel_fr_CA
ButtonLabel_fr
ButtonLabel_en_US
ButtonLabel_en
ButtonLabel

我定义了一个扩展ResourceBundle类的新类,您可以在其中设置父捆绑包,但我不知道这个类何时被实例化,以及当我在FacesContext中更改语言时会发生什么。有可能以某种方式推翻命令吗?

我需要扩展类ResourceBundle.Control并覆盖方法getCandidateLocales,在方法中可以指定使用的区域设置的顺序。

然后,这个类的实例被传递给getBundle方法——我在扩展ResourceBundle的类的构造函数中调用了这个方法,如下所示:

final Locale locale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
final CustomControl control = new CustomControl();
setParent(getBundle("MyBundle", locale, control));

此类可以用作faces-config.xml中的<resource-bundle>,也可以加载<f:loadBundle ...>

<resource-bundle>
<base-name>com.package.MyBundle</base-name>
<var>bundle</var>
</resource-bundle>

相关内容

  • 没有找到相关文章

最新更新