从CDI bean获取属性文件

时间:2014-08-03 05:45:09

标签: jsf java-ee cdi

如何从CDI bean获取属性文件,我指的是用于国际化目的的属性文件here

@ManagedBean中,一切都很简单@ManagedProperty(name="....")但我无法在CDI bean中遇到相同的方法。

非常感谢。

2 个答案:

答案 0 :(得分:1)

据我所知,CDI不支持@ManagedProperty给出的那种字段级访问权限(您可以拥有@ManagedProperty(name="#{msgs.title}"))。如果您想在CDI中实现这种级别的控制,那么您必须编写CDI Producer

考虑到资源包只是ResourceBundle的一类,您可以轻松地获取已定义的包:

    FacesContext ctxt = FacesContext.getCurrentInstance();
    ResourceBundle bundle = ctxt.getApplication().getResourceBundle(ctxt, aValue);
    bundle.get("title");

或者,你可以简单地将FacesContextApplication注入你的bean:

    @Inject
    Application theApplication


    public void getBundle{
        ResourceBundle bundle = theApplication.getResourceBundle(ctxt, aValue);

    }

答案 1 :(得分:1)

如果您正在寻找CDI中的国际化支持以用于JSF目的,您可能需要查看DeltaSpike的JSF模块。它基于core中提供的核心i18n支持。