【发布时间】:2011-09-10 12:07:07
【问题描述】:
我希望能够从 JSF 2 托管 bean 内部的消息包中检索字符串。这将在字符串用作FacesMessage 中的摘要或详细信息参数或用作抛出异常中的消息的情况下完成。
我想确保托管 bean 为用户的语言环境加载正确的消息包。我不清楚如何使用 JSF API 调用从托管 bean 执行此操作。
我的配置是:
- 使用 Tomcat 7 作为容器,因此解决方案不能依赖仅在完整应用服务器容器中工作的 API 调用
- 使用 JSF 2 参考实现 (Mojarra)
- 不使用任何允许 CDI 的库
注意:我确实看到了this similar question,但这取决于我的配置中不可用的功能
编辑:我在最初的问题中犯了一个错误。我想问的是“如何从托管 bean 中获取 resource 捆绑字符串”? BalusC 给出了我所问的正确答案。我真正想问的解决方案非常相似:
public static String getResourceBundleString(
String resourceBundleName,
String resourceBundleKey)
throws MissingResourceException {
FacesContext facesContext = FacesContext.getCurrentInstance();
ResourceBundle bundle =
facesContext.getApplication().getResourceBundle(
facesContext, resourceBundleName);
return bundle.getString(resourceBundleKey);
}
另外,这里有一个指向another question 的链接,它解释了“消息”包和“资源”包之间的区别。
【问题讨论】:
标签: jsf jsf-2 managed-bean message-bundle