从内部iframe刷新父组件

时间:2016-06-22 04:27:55

标签: jsf primefaces

我有这个xhtml(primefaces)简单页面:

....
<div id="header">
    <h:outputText value="#{userBean.name}"/>
</div>
<div id="content">
    <p:tabView value="#{appTabbedView.tabs}" var="tab" dynamic="true"
        cache="false">
        <p:tab title="#{tab.title}">
            <iframe frameborder="0" src="#{tab.page}" />
        </p:tab>
    </p:tabView>
</div>
.....

在iframe中,我加载了一个p:tab,它加载了一个名为“Profile.xhtml”的页面,允许编辑(更改)用户的名字。 如何刷新标题以显示新用户的名称(im在iframe中!)? 我找不到解决方案,我尝试了一切。

1 个答案:

答案 0 :(得分:0)

这是我的解决方案。它有效!

....
<div id="header">
    <h:form id="formHeader">
        <p:commandLink id="hiddenLink" update="user" value="hiddenLink" style="display:none" />
        <h:outputText value="#{userBean.name}" id="user"/>
    </h:form>
</div>

<div id="content">
    <p:tabView value="#{appTabbedView.tabs}" var="tab" dynamic="true" cache="false">
        <p:tab title="#{tab.title}">
            <iframe frameborder="0" src="#{tab.page}" />
        </p:tab>
    </p:tabView>
</div>
.....

的script.js:

function refreshHeader() {
    window.parent.document.getElementById('formHeader:hiddenLink').click();
}

在Profile.xhtml中:

....
<p:commandButton id="accept" ... oncomplete="refreshHeader()" />
....