この質問は、 JSF 2 での古い言語スイッチャーの実装のフォローアップです。
PrimeFaces はいくつかの新しいビルドをリリースしており、私の JSF の知識は以前より少し良くなっていますが、質問の内容はまだ有効です。
要約すると、完全に ajax 化された 1 つの xhtml ページがあります。
言語スイッチャーは次のとおりです。
<h:form id="selectLanguage" >
<p:commandLink action="#{languageSwitcher.setLanguage('it')}" rendered="#{languageSwitcher.language!='it'}" >
<h:graphicImage library ="images" name="it.gif" title="it" />
</p:commandLink>
<p:commandLink action="#{languageSwitcher.setLanguage('en')}" rendered="#{languageSwitcher.language!='en'}" >
<h:graphicImage library ="images" name="en.gif" title="en" />
</p:commandLink>
</h:form>
をit
選択すると、en
フラグのみが表示され、その逆も同様です。また、Web ページ内のすべてのものをリソース バンドルの翻訳で更新したいと考えています。
特に、p:dialog
ヘッダー属性も更新する必要があるいくつかの S があります。ダイアログ フォームは各ダイアログ内にあります。
<p:dialog header="#{msgs.myHeader}" ... >
<h:form .... />
</p:dialog >
ページの残りの部分は、<p:layout>
いくつかの layoutUnits を含む です。それぞれlayoutUnit
には、同様に翻訳する必要がある他のコンポーネントを含むフォームが含まれています。
LanguageSwitcher はSessionScoped
JSF Managed Bean
.
次の方法をすべて試しました。
<f:ajax render="@all" />
p:commandLink
ブレースの内側update="@all"
内部の属性p:commandLink
<p:ajax update="@all" />
p:commandLink
ブレースの内側
残念ながら、どれも機能しません。
を試してみまし@all
たが、フォームの ID を挿入することはできますが、それほど多くはありません。問題は、ダイアログ ヘッダーがこの方法で更新されないことです。
PrimeFaces 3.4.1 - Mojarra 2.1.13 を使用しています