JSF Language Switcher und Ajax Update

Diese Frage ist eine Fortsetzung der älterenImplementierung des Sprachumschalters in JSF 2.

Die Substanz der Frage ist immer noch gültig, obwohl PrimeFaces einige neuere Builds veröffentlicht hat und meine JSF-Kenntnisse ein bisschen besser sind als zuvor.

Zusammenfassend habe ich eine einzige XHTML-Seite, die vollständig ajaxifiziert ist.

Der Sprachumschalter ist dieser:

<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>

Ich will das wennit gewählt wird nur dieen Flagge wird angezeigt, und umgekehrt. Und ich möchte, dass alle Inhalte der Webseite mit den Resource Bundle-Übersetzungen aktualisiert werden.

Insbesondere habe ich einigep:dialogS, deren Header-Attribute ebenfalls aktualisiert werden müssen. Die Dialogformulare befinden sich in jedem Dialog:

<p:dialog header="#{msgs.myHeader}"  ... >
    <h:form .... />
</p:dialog >

Der Rest der Seite ist a<p:layout> mit einigen layoutUnits. JederlayoutUnit enthält ein Formular mit anderen Komponenten, die ebenfalls übersetzt werden müssen.

LanguageSwitcher ist einSessionScoped JSF Managed Bean.

Ich habe alle folgenden Möglichkeiten ausprobiert:

<f:ajax render="@all" /> in derp:commandLink Hosenträgerupdate="@all" Attribut im Innerenp:commandLink<p:ajax update="@all" /> in derp:commandLink Hosenträger

Leider funktioniert keiner von ihnen.

Ich habe es mit versucht@allIch bin zwar verfügbar, um die IDs der Formulare einzufügen, aber es sind nicht so viele. Problem ist, dass die Dialogheader nicht auf diese Weise aktualisiert werden.

Ich benutze PrimeFaces 3.4.1 - Mojarra 2.1.13

Antworten auf die Frage(1)

Ihre Antwort auf die Frage