JSF - iFrame src属性与HTML显示不匹配

时间:2010-12-22 16:14:23

标签: html jsf iframe primefaces

我的页面中有一个iFrame,如下所示:

<h:panelGroup id="gameDiv">
    <f:verbatim>
        <iframe src="/levelup/resources/#{cc.attrs.src_dir}/#{cc.attrs.src_html}"     width="700px" height="800px" frameborder="0" id="gameFrame">
         </iframe>
    </f:verbatim>
</h:panelGroup>

基本上,“src”变量使用JSF 2.0 EL绑定,并从辅助bean获取其值。

然后我使用表单来更新此值,并刷新整个页面。在渲染的HTML中,我可以看到我的div的“src”已经更新。但是,HTML页面仍显示旧页面。

我认为问题类似于2 iframes with the same display even if the src are different,我尝试了已经提到过的解决方案(使用时间戳使src唯一,或者在每个页面加载时将它们重置为“about:blank”)。然而,他们都没有工作。

有关信息,更新辅助bean的表单是:

<h:form id="gameSelectionForm">
    <h:selectOneMenu id="gameSelection">
        <f:selectItems value="#{gameBean.gameIds}" />
    </h:selectOneMenu>
    <p:commandButton id="gameSelector" action="#{gameBean.changeGame}" update="gameScoreFieldset, gameDiv" />
</h:form>

任何提示都会非常有用。

提前致谢,
塞巴斯蒂安

1 个答案:

答案 0 :(得分:3)

您正在使用JS / Ajax更改src的{​​{1}},但不会重新加载其内容。

有两种方法可以解决这个问题:

  • 只是不要使用JS / ajax。同步HTTP请求将重新加载整个文档,从而自动重新加载iframe

    iframe
  • 使用JS强制重新加载。 <p:commandButton ajax="false" /> 之后添加以下

    <iframe>

哦,你肯定需要删除<script>document.getElementById('gameFrame').location.reload()</script> 。由于JSF 1.2标记为utterly useless