複数の IFrame を含む XPage (「xBase」) があり、それぞれがデータベースに 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 " (時間と URL を示すラベルのみ > 問題が発生していないことを簡単に確認できます):
<?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>