我希望能够从 JSF 2 托管 bean 内部的消息包中检索字符串。这将在字符串用作 a 中的摘要或详细信息参数FacesMessage
或用作抛出异常中的消息的情况下完成。
我想确保托管 bean 为用户的语言环境加载正确的消息包。我不清楚如何使用 JSF API 调用从托管 bean 执行此操作。
我的配置是:
- 使用 Tomcat 7 作为容器,因此解决方案不能依赖仅在完整应用程序服务器容器中工作的 API 调用
- 使用 JSF 2 参考实现 (Mojarra)
- 不使用任何允许 CDI 的库
注意:我确实看到了这个类似的问题,但这取决于我的配置中不可用的功能
编辑:我在原来的问题中犯了一个错误。我的意思是“如何从托管 bean 中获取资源包字符串”?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);
}
此外,这里是另一个问题的链接,该问题解释了“消息”包和“资源”包之间的区别。