我有一个名为主页的xhtml页面,其中包含另一个名为子页面的xhtml页面,它包含在iframe中,因此结构看起来像:
<!-- mainpage.xhtml -->
<div class="nav-head">
<ui:include src="header.xhtml" />
</div>
<div class="sub-page">
<iframe id="subpage" name="subpage" src="subpage.xhtml">
<p>Your browser does not support iframes.</p>
</iframe>
</div>
在我的subpage.xhtml中,我有一个选择菜单来更改应用程序的区域设置:
<h:selectOneMenu value="#{i18NController.language}" onchange="submit()">
<f:selectItems value="#{i18NController.availableLocales}" />
</h:selectOneMenu>
在控制器中我使用:FacesContext.getCurrentInstance().getViewRoot().setLocale(currentLocale);
为我的应用程序设置新的语言环境。
它运行正常,但我的问题只是更改了subpage.xhtml的内容,而mainpage.xhtml的其他内容在我刷新整个mainpage.xhtml之前没有改变。
我知道问题是因为在控制器中我调用了FacesContext.getCurrentInstance().getViewRoot()
,它返回了subpage.xhtml的视图(因为我在subpage.xhtml中调用它)因此只有子页面的视图此时已更改。但我想问一下是否有可能获得我的mainpage.xhtml的视图,以便我可以使用subpage.xhtml同时将新的语言环境应用于此mainpage.xhtml。