我的页面中有一个 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/