嵌套EL表达式确实无效。不要那样做。另外,
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})}
我如何才能在那里传递真正使用过的区域设置?
ExternalContext
没有getLocale()
方法。您希望改用#{facesContext.viewRoot.locale}
。
#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,facesContext.viewRoot.locale)}