我希望能够从JSF 2受管Bean内部的消息束中检索字符串。在将字符串用作FacesMessage
中的summary或details参数或引发的异常中的消息的情况下,可以这样做。
我想确保托管bean为用户的语言环境加载正确的消息束。我不清楚如何使用JSF API调用从托管Bean中执行此操作。
我的配置是:
NOTE:
编辑:
我在最初的问题中犯了一个错误。我要问的是“如何从托管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 2受管Bean内部的消息束中检索字符串。在将字符串用作...
您可以通过<message-bundle>
获得Application#getMessageBundle()
的完整合格捆绑包名称。您可以通过Application#getMessageBundle()
获取当前语言环境。您可以从完全合格的捆绑包中获得UIViewRoot#getLocale()
名称和语言环境,按UIViewRoot#getLocale()
。
messageBundleName
有两种方法可以使用@ManagedProperty("#{msg}")
private ResourceBundle bundle; // +setter
或FacesContext context = FacesContext.getCurrentInstance();
ResourceBundle bundle = context.getApplication().getResourceBundle(context, "msg");
String message = bundle.getString("key");
在托管bean中获取String资源束(请参见下面每个的定义):