我有一個複雜的jsf頁面,其中包含一些在PrimeFaces中開發的小部件。到目前爲止,該應用程序已完全被渲染,這意味着沒有提交,但所有的事件和更新都是通過Ajax行爲處理的(這不是必須的,而是一個很好的功能)。我也做了SelectOneMenu
切換語言:JSF中的語言切換器實現
<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>
這個偉大的工程,是首選的解決方案,因爲它是阿賈克斯,但是
編輯
此解決方案不會更新PrimeFaces TabView中的Tab標題,並且這是因爲Tab標題需要翻譯而被阻止的問題。
選項2
在JavaScript中的頁面的完整的重新加載。我曾經試過,但不工作(不知道爲什麼):
<p:selectOneMenu value="#{languageSwitcher.selectedLanguage}" onchange="window.location.reload()" >
選項3
在Java頁面的完整重載喜歡這裏解釋:https://stackoverflow.com/a/1821708/870122(說實話我還沒有嘗試過,但將盡快!)
歡迎任何建議。
謝謝,這是一個很好的功能,但遺憾的是它似乎有在IE9渲染問題(選擇項目時,窗口小部件凍結後)。使用update =「id1,id2」時,問題消失。我會發佈一個bug並在這裏添加鏈接 – perissf 2012-04-18 19:37:35