当XPage上存在多个IFrame时,无法设置sessionScope变量

xpa*_*oob 3 xpages

我有一个包含多个IFrame的XPage("xBase"),每个IFrame在我的数据库中显示一个XPage("xIFrame").单击xBase中的按钮时,会设置sessionScope变量,并且会部分刷新显示此变量的标签(请参阅示例代码).只要没有太多的IFrame,以这种方式显示变量就可以正常工作.在下面的简短演示示例中,显示屏最多只能处理3个IFrame,但只要存在4个或更多IFrame,就不再设置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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

xpa*_*oob 8

这个问题可以通过添加来解决

xsp.persistence.tree.maxviews = 16

到数据库的xsp.properties文件,然后清理项目.16的值是任意的,只要确保它高于您计划使用的IFrame的数量.

所有的功劳归功于提供此解决方案的Sven Hasselbach和Per Henrik Lausten.