当 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/