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

标签 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 绑定(bind)的,并从支持 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>

任何提示都会非常有用。

提前致谢,
塞巴斯蒂安

最佳答案

您正在更改 src iframe的使用 JS/Ajax,但不重新加载其内容。

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

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

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

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

哦,您肯定需要删除 <f:verbatim> 。从 JSF 1.2 开始,该标签为 utterly useless .

关于html - JSF - iFrame src 属性与 HTML 显示不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4511156/

相关文章:

javascript - jQuery 将相同的类添加到两个不同容器中的相同元素索引

javascript - 外部化 View 的指令不起作用

javascript - 尝试根据用户点击的内容显示显示的数据

javascript - 更新html中iframe链接的href

javascript - 全屏iframe背景视频

html - Zurb Foundation 框架无法正常工作

jsf - 如何在 Liberty Profile 中重现相同的 WAS ND 类加载器设置

java - 如何使用 jGrowl 创建 JSF 消息

css - jsf模板中的背景url路径

iframe - iFrame 上的 Angular、onLoad 函数