我有一个复杂的 jsf 页面,其中包含一些在 PrimeFaces 中开发的小部件。到目前为止,应用程序是完全 ajax 化的,这意味着没有提交,但是所有的事件和更新都是通过 Ajax 行为处理的(这不是必须的,而是一个很好的特性)。我还做了一个SelectOneMenu
切换语言:
<h:form>
<p:panelGrid columns="2" >
<h:outputText value="#{msgs.SelectLanguage}" />
<p:selectOneMenu value="#{languageSwitcher.selectedLanguage}" >
<f:selectItems value="#{languageSwitcher.languages}" ></f:selectItems>
</p:selectOneMenu>
</p:panelGrid>
</h:form>
切换器运行良好。我的问题是如何在选择语言时重新加载翻译的消息。
我已经尝试了这些选项:
选项1
在 selectOneMenu 中使用 ajax 更新:
<p:ajax update="myFormsTobeUpdated" ></p:ajax>
这很好用,并且是首选的解决方案,因为它是 Ajax,但是
已编辑
此解决方案不会对 PrimeFaces TabView 中的选项卡标题进行 ajax 更新,这是一个阻塞问题,因为需要翻译选项卡标题。
选项 2
用 Javascript 完全重新加载页面。我已经尝试过了,但不起作用(不知道为什么):
<p:selectOneMenu value="#{languageSwitcher.selectedLanguage}" onchange="window.location.reload()" >
选项 3
在 Java 中完全重新加载页面,如下所述:https ://stackoverflow.com/a/1821708/870122 (老实说我还没有尝试过,但很快就会这样做!)
欢迎任何建议。