【发布时间】:2014-08-03 05:45:08
【问题描述】:
如何从 CDI bean 获取属性文件,我的意思是用于国际化目的的属性文件,如 here 所述。
在@ManagedBean 中,一切都很简单@ManagedProperty(name="...."),但我无法在 CDI bean 中实现相同的目标。
非常感谢。
【问题讨论】:
标签: jsf jakarta-ee cdi
如何从 CDI bean 获取属性文件,我的意思是用于国际化目的的属性文件,如 here 所述。
在@ManagedBean 中,一切都很简单@ManagedProperty(name="...."),但我无法在 CDI bean 中实现相同的目标。
非常感谢。
【问题讨论】:
标签: jsf jakarta-ee cdi
据我所知,CDI 不支持@ManagedProperty 提供的那种字段级访问(您可以拥有@ManagedProperty(name="#{msgs.title}"))。如果您想在 CDI 中获得这种级别的控制,则必须编写 CDI Producer。
考虑到资源包只是ResourceBundle 的一个类,您可以通过以下方式轻松获取定义的包:
FacesContext ctxt = FacesContext.getCurrentInstance();
ResourceBundle bundle = ctxt.getApplication().getResourceBundle(ctxt, aValue);
bundle.get("title");
或者,您可以简单地将 FacesContext 或 Application 注入到您的 bean 中:
@Inject
Application theApplication
public void getBundle{
ResourceBundle bundle = theApplication.getResourceBundle(ctxt, aValue);
}
【讨论】: