我的页面中有一个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>
任何提示都会非常有用。
提前致谢,
塞巴斯蒂安
答案 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。