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

时间:2013-04-17 06:18:21

标签: 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>

XPage“ xIFrame ”(只是一个标签显示时间和网址&gt;简单,以确保它不会导致问题):

<?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>

1 个答案:

答案 0 :(得分:8)

可以通过添加

来解决问题
  

xsp.persistence.tree.maxviews = 16

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

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

相关问题