这个问题是JSF 2中较旧的语言切换器实现的后续问题。
问题的实质仍然有效,尽管 PrimeFaces 发布了一些更新的版本,而且我的 JSF 知识比以前好一点。
总而言之,我有一个完全 ajaxified 的 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
显示标志,反之亦然。我希望网页中的所有内容都使用资源包翻译进行更新。
特别是,我有一些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