【发布时间】:2013-04-17 06:18:21
【问题描述】:
我有一个包含多个 IFrame 的 XPage(“xBase”),每个 IFrame 在我的数据库中显示一个 XPage(“xIFrame”)。单击 xBase 中的按钮时,会设置 sessionScope 变量,并部分刷新显示此变量的标签(请参见示例代码)。只要没有太多 IFrame,以这种方式显示变量就可以正常工作。在下面的简短演示示例中,最多只能显示 3 个 IFrame,但一旦存在 4 个或更多,就不再设置 sessionScope 变量。
我在 Notes Client 8.5.3、Firefox 13.0.1 和 Safari 5.1.7 中测试了给定的示例,结果相同。部分刷新本身似乎没有问题,因为刷新显示当前时间的标签可以正常工作。谁能告诉我是什么问题?
XPage“xBase”:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom">
<xp:this.beforePageLoad><![CDATA[#{javascript:sessionScope.remove("testvar");}]]></xp:this.beforePageLoad>
<xp:div id="divIFrames">
<iframe src="xIFrame.xsp?para0=abc" id="iframe0" name="iframe0"></iframe>
<iframe src="xIFrame.xsp?para0=def" id="iframe1" name="iframe1"></iframe>
<iframe src="xIFrame.xsp?para0=ghi" id="iframe2" name="iframe2"></iframe>
<iframe src="xIFrame.xsp?para0=jkl" id="iframe3" name="iframe3"></iframe>
<iframe src="xIFrame.xsp?para0=mno" id="iframe4" name="iframe4"></iframe>
</xp:div>
<xp:br/>
<xp:button value="refresh iframes" id="button0">
<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="divIFrames"></xp:eventHandler>
</xp:button>
<xp:br/><xp:br/>
<xp:label id="label"><xp:this.value><![CDATA[#{javascript:new Date().toUTCString()+": "+sessionScope.containsKey("testvar")}]]></xp:this.value></xp:label>
<xp:br></xp:br>
<xp:button value="set sessionScope / refresh label" id="button1">
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="label">
<xp:this.action><![CDATA[#{javascript:sessionScope.put("testvar","STRING");}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
</xp:view>
XPage "xIFrame"(只是一个显示时间和网址的标签> 确保它不会导致问题):
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:label value="#{javascript:new Date().toUTCString()+':'+context.getUrl().toString()}"></xp:label>
</xp:view>
【问题讨论】:
-
您可以尝试在您的 XSP 属性中设置 xsp.session.transient=true 吗?这行得通吗?
-
你为什么使用 iframe?还有其他替代方法,例如包含页面 (xp:include)。
-
使用文件上传控件时,我需要执行完全刷新来上传文件。为了也使上传工作在对话框中,我将控件放在 iframe 中以避免刷新主页。
-
@PerHenrikLausten:这是一个非常有趣的问题,因为不再执行服务器端事件。执行超过四个请求时似乎存在限制。 Julian Buss 发现了类似的东西:juliusbuss.de/web/youatnotes/blog-jb.nsf/dx/… 但在这种情况下,执行四个多个 xhr-Call 是一个问题......
-
将 #xsp.persistence.tree.maxviews=4 更改为 4 以上有帮助吗?我知道 Julian Buss 也尝试过,但仍然值得一试
标签: xpages