JSF:将实际的locale参数传递给resourceBundle调用而不是默认的null

时间:2011-05-27 09:10:28

标签: jsf parameters locale resourcebundle

UI上有一个非平凡的菜单。 它的项目以循环方式命名:

循环开始

<li>
<h:commandLink action="#{menuItem.getGlobalTransitionName()}">#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,null)}
</h:commandLink>
</li>

循环结束

调用上面执行的resourceBundle,其中设置了默认语言环境 - 它被硬编码为null值,因此始终解析为En

#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,null)}

我尝试了什么:

1。这会调用解析错误:

#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,${externalContext.locale})}

2。这也会引发错误:

#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,#{resourceBundle.locale})}

如何在那里传递真正使用过的语言环境?

1 个答案:

答案 0 :(得分:1)

嵌套EL表达式确实无效。不要那样做。另外,ExternalContext没有getLocale()方法。您想要使用#{facesContext.viewRoot.locale}

#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,facesContext.viewRoot.locale)}