是否可以将应用程序范围与JSF的ResourceBundle一起使用

时间:2015-09-17 01:50:06

标签: jsf-2 scope resourcebundle

我们目前正在我们的应用程序中添加对第二语言的支持,并且我们将消息包加载到Session Scoped bean中,如此

bundle = ResourceBundle.getBundle(languageSetting.getLanguage().getPropertiesFileName(), new OurCustomBundleControl());

这允许我们像这样检索消息:

public String get(final String key) {
    return bundle.getString(key);
}

languageSetting变量是我们用来切换语言的类,它是通过页面上的控件完成的。

我们这样做有两个原因,首先我们需要通过覆盖Control类来使用非UTF-8字符(如建议here),我们也使用CDI来管理范围。 / p>

我们的假设是消息包类只能是会话作用域,因为不同的用户需要选择不同的语言,但是我们担心性能方面可能更适合使用应用程序作用域。

是否可以拥有带有Application范围的自定义资源包?是推荐吗?

我认为有可能以某种方式在faces-config中指定消息包这是常用方法,但我们仍然需要覆盖Control类。然后我们可以通过使用UIViewRoot#setLocale()切换语言环境来切换语言。

另一种选择可能是拥有两个消息包,然后在get方法中有一个条件语句?

0 个答案:

没有答案