java - FacesContext.getCurrentInstance().getApplication().getMessageBundle() 返回哪个 messageBundle?

标签 java jsf

当 faces-config.xml 中有 3 个消息包时,会返回哪一个?我可以控制应该返回哪一个吗?当我打印出 FacesContext.getCurrentInstance().getApplication().getMessageBundle() 的值时,它返回 3 个之一,但我可以确保始终返回相同的包吗?

(我问这个问题是因为根据缺少的关键属性,我在其他地方有一些奇怪的行为,但我现在不想更深入,因为它超出了这个问题的范围)

最佳答案

当你在 bean 中时,你总是可以使用facecontext:

FacesContext facesContext = FacesContext.getCurrentInstance();
String messageBundleName = facesContext.getApplication().getMessageBundle();

然后您可以指定 bundle 名称:

Locale locale = facesContext.getViewRoot().getLocale();
ResourceBundle bundle = ResourceBundle.getBundle(messageBundleName, locale);

在 faces-config.xml 中:

<managed-bean>
        <managed-bean-name>myBean</managed-bean-name>
        <managed-bean-class>de.laliluna.tutorial.messageresource.bean.MyBean</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

该 bundle 由 <managed-bean-name> 返回区域设置来自您的位置。

也在jsp上:

<f:loadBundle basename="path to bundle" var="msg"/>

关于java - FacesContext.getCurrentInstance().getApplication().getMessageBundle() 返回哪个 messageBundle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23891230/

相关文章:

java - 如何使用容器 SAS 和 Azure Java SDK 设置 RetryPolicy?

java - 在 AST Visitor 中,我如何知道我正在访问哪个节点的属性?

java - EntityManager 在 JBoss JSF bean 中的 merge() 上抛出 TransactionRequiredException

java - 从代码中获取 SelectOneMenu 的所选项目

jsf - JSF返回带有纯/原始XHTML/XML/EL源的空白/未解析页面,而不是呈现的HTML输出

jsf h :messages/h:message for specific clientId

java - Libgdx 播放/暂停音乐

java - 服务器准备好后如何在 Spring 中执行方法?

java - 何时使用 "throws RuntimeException"Java

java - 如何获取具有绝对路径的文件的 InputStream 并将其添加到 StreamedContent 对象以便在 p :fileDownload? 中使用它