PrimeFaces で開発されたいくつかのウィジェットを含む複雑な jsf ページがあります。これまでのところ、アプリケーションは完全に 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 (正直なところ、まだ試していませんが、すぐに試してみます!)
どんな提案でも大歓迎です。