多个iframe的部分更新无法正常工作

时间:2013-04-15 09:26:45

标签: iframe xpages

在XPage(名为“xBase”)上,我在容器(div)中有两个IFrame:

<xp:div id="divIFrames">
    <iframe src="xTest.xsp?key=abc" id="iframe0" frameborder="0" width="100%" height="28px" scrolling="no"></iframe>
    <iframe src="xTest.xsp?key=def" id="iframe1" frameborder="0" width="100%" height="28px" scrolling="no"></iframe>
    <xp:label><xp:this.value><![CDATA[#{javascript:context.getUrl().toString();}]]></xp:this.value></xp:label>
</xp:div>

两个IFrame都指向我的数据库中的另一个XPage“xTest”,具有不同的URL参数。为简单起见,“xTest”仅包含具有当前URL的标签:

<xp:label value="#{javascript:context.getUrl().toString()}"></xp:label>

但是,容器的部分更新无法正常工作,并且URL参数已添加到“xBase”:$$ ajaxid = view%3A_id1%3AdivIFrames

如果有一个带有URL参数的iframe超过1个,则只会出现此问题。例如,它适用于src中的多个iframes 没有 URL参数或者带有URL参数的单个iframe。为什么它不适用于2个或更多带有URL参数的IFrame?有谁知道我在这里做错了什么?

修改

原来不是部分刷新,但是当XPage上有多个IFrame时,sessionScope中的设置变量不起作用。由于这不适合当前的问题,我创建了new one。对于给您带来的不便,我感到很抱歉!

1 个答案:

答案 0 :(得分:2)

xBase.xsp 中更改的标签表示部分刷新正常工作。 URL参数

?$$ajaxid=view%3A_id1%3AdivIFrames
添加了

,因为这是部分刷新的工作方式:它是对XPage本身的Ajax请求,参数是随请求刷新的元素的id。显示请求URL的标签位于刷新的DOM元素内,这就是您看到它的原因。

由于 context.getUrl()方法的缓存,您有时会看到“原始”查询,有时会看到带有Ajax参数的URL。如果您将示例代码更改为...

facesContext.getExternalContext().getRequest().getQueryString();

...您将看到没有任何缓存的参数。

顺便说一句:我已经使用1000个IFrame测试了示例代码以获得乐趣,它对我没有任何问题。

请提供有关您的环境的更多信息(Domino版本,浏览器等)