如何在另一个xhtml中获取xhtml的UIViewRoot

时间:2017-11-02 14:21:27

标签: jsf jsf-2 xhtml

我有一个名为主页的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。

0 个答案:

没有答案