2

我的页面中有一个 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 个具有相同显示的 iframe,即使 src 不同,我尝试了已经提到的解决方案(使用时间戳使 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>

任何提示都会非常有用。

在此先感谢,
塞巴斯蒂安

4

1 回答 1

3

您正在更改src使用iframeJS/Ajax,但没有重新加载其内容。

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

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

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

    <script>document.getElementById('gameFrame').location.reload()</script>
    

哦,你肯定需要删除<f:verbatim>. 从 JSF 1.2 开始,这个标签就完全没用了。

于 2010-12-24T15:54:37.667 回答