JSF:将真实的语言环境参数传递给resourceBundle调用而不是默认的null
UI 上有退出非平凡菜单。 它的项目以这种方式在循环中命名:
循环开始
<li>
<h:commandLink action="#{menuItem.getGlobalTransitionName()}">#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,null)}
</h:commandLink>
</li>
循环结束
上面执行的对resourceBundle的调用,其中设置了默认区域设置 - 它被硬编码为null
值,因此始终解析为<code>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})}
我如何在那里传递真正使用的区域设置?
There is quit non-trivial menu on UI.
Its items named in loop this way:
loop start
<li>
<h:commandLink action="#{menuItem.getGlobalTransitionName()}">#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,null)}
</h:commandLink>
</li>
loop end
call to resourceBundle performed above,where default locale is set - it's hardcoded to null
value,so resolved to En
always:
#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,null)}
What I've tried:
1. this invokes parsing error:
#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,${externalContext.locale})}
2. this invokes error as well:
#{resourceBundle.getMessage(menuItem.id,null,menuItem.id,#{resourceBundle.locale})}
how can I pass really used locale there?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
嵌套EL表达式确实是无效的。不要那样做。另外,
ExternalContext
没有getLocale()
方法。您想使用#{facesContext.viewRoot.locale}
代替。Nesting EL expressions is indeed invalid. Don't do that. Plus,
ExternalContext
doesn't have agetLocale()
method. You want to use#{facesContext.viewRoot.locale}
instead.