1

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})}

我怎样才能在那里传递真正使用过的语言环境?

4

1 回答 1

1

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

#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,facesContext.viewRoot.locale)}
于 2011-05-27T11:06:22.977 回答