gpt4 book ai didi

jsf - 如何在 JSF 中以编程方式设置语言环境

转载 作者:行者123 更新时间:2023-12-02 05:17:43 25 4
gpt4 key购买 nike

我目前正在尝试以编程方式设置语言环境,但找不到好的解决方案。用例是我有另一个网站将数据发布到我的网站,该网站具有区域设置参数,并且基于此区域设置,我必须呈现我的页面。

我已经尝试在 preRenderView、constructor 和 PostConstruct 上设置语言环境,但似乎已经太晚了。

有什么建议吗?谢谢。

最佳答案

重点是需要通过UIViewRoot#setLocale()来设置locale在 View 被渲染之前。 <f:view locale="#{languageBean.currentLocale}">仅在构建 View 期间设置。因此,此后调用的任何基于请求的操作 bean 属性都不会产生任何影响。您确实需要手动调用 UIViewRoot#setLocale()以及。

最简单的是执行 UIViewRoot#setLocale()currentLocale 的二传手工作属性(property)也是如此。 Daniel 在您的问题评论中提供的链接的答案中提到的 bean 示例正是这样做的:JSF 2.0 set locale throughout session from browser and programmatically .这样就不需要丑陋的 JS hack 来重新加载页面一次。

根据您自己的回答,还有另一个可能的问题:您的“接收方 bean”似乎是请求范围的,而不是 #{languageBean}本身。如果此 bean 是在之后 View 的任何与区域设置/语言相关的方面(例如,语言下拉列表、本地化文本等)首次构造的,那么再更改它们也为时已晚。您希望将 bean 的构造移动到预呈现 View 事件(例如,通过 <f:event listener> )。另一种方法是只在 currentLocalegetter 中执行请求参数收集作业。属性(property)代替。

关于jsf - 如何在 JSF 中以编程方式设置语言环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14373153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com