私はPrimeFacesで開発されたウィジェットを含む複雑なjsfページを持っています。今のところ、アプリケーションは完全にajax化されています。つまり、サブミットはありませんが、すべてのイベントと更新はAjaxの動作によって処理されます(これは必須ではありませんが、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>
スイッチャーがうまく機能:私はまた、言語を切り替えるSelectOneMenu
を行っています。 私の問題は、言語を選択したときに翻訳されたメッセージを再読み込みする方法です。
私は、これらのオプションを試してみました:selectOneMenu内部Ajaxのアップデートで
オプション1
:
<p:ajax update="myFormsTobeUpdated" ></p:ajax>
これは素晴らしい作品、そしてそれはAjaxのだから好ましい解決策であるが、しかし、
EDITED
このソリューションは、PrimeFaces TabViewでタブのタイトルをajaxで更新しません。これは、タブのタイトルを翻訳する必要があるため、問題がブロックされています。 JavaScriptでページの完全なリロードして
オプション2
。私はこれを試してみましたが、動作しません(理由を伝えることはできません):
<p:selectOneMenu value="#{languageSwitcher.selectedLanguage}" onchange="window.location.reload()" >
オプション3
Javaでページの完全なリロードすると、ここで説明したように:https://stackoverflow.com/a/1821708/870122(正直に言うと私はまだそれを試していないが、すぐになります!)
任意の提案を歓迎します。
おかげで、これは良い機能ですが、残念ながら(アイテム、ウィジェットがフリーズを選択した後)IE9でのレンダリングの問題を抱えているようです。この問題は、update = "id1、id2"を使用すると消えます。私はバグを投稿し、ここにリンクを追加します – perissf