多个iFrame的部分更新不起作用

多个iFrame的部分更新不起作用,iframe,xpages,Iframe,Xpages,在XPage(名为“xBase”)上,我在一个容器(div)中有两个iFrame: 这两个iFrame都指向数据库中的另一个XPage“xTest”,具有不同的URL参数。为简单起见,“xTest”只包含一个带有当前URL的标签: <xp:label value="#{javascript:context.getUrl().toString()}"></xp:label> 但是,容器的部分更新不起作用并且在“xBase”中添加了一个URL参数:$$ajaxid=

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


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

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

但是,容器的部分更新不起作用并且在“xBase”中添加了一个URL参数:$$ajaxid=view%3A_id1%3adivrames

只有当有超过1个带有URL参数的iFrame时,才会出现此问题。例如,它适用于src中没有URL参数的多个iframe,或具有URL参数的单个iframe。为什么它不适用于2个或更多带有URL参数的iFrame?有人知道我做错了什么吗

编辑

结果表明,当XPage上有多个iframe时,不是部分刷新,而是在sessionScope中设置变量不起作用。由于这不适合当前的问题,我创建了一个新的解决方案。很抱歉给您带来不便

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

?$$ajaxid=view%3A_id1%3AdivIFrames
之所以添加,是因为这是部分刷新的工作方式:它是对XPage本身的Ajax请求,参数是随请求刷新的元素的id。显示请求URL的标签位于刷新的DOM元素中,这就是为什么您会看到它

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

facesContext.getExternalContext().getRequest().getQueryString();
。。。您将看到没有任何缓存的参数

顺便说一句:我用1000个iFrame测试了示例代码,它对我来说没有任何问题


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

让我澄清一下:如果SRC中有超过1个带有URL参数的IFRAME,则部分更新不起作用。这个问题是有效的,我不明白为什么关闭它!我也没有答案。我不能按原样重新打开它。有人吗?我很高兴,如果你像我一样把问题标错了(在一个xpage问题中添加了jsf)并讨论了jsf生命周期中的IBM组件,我得到了答案:不要使用IBM组件,我的问题就结束了。。我可以说,有些人把一个问题贴上无效标签,只是因为他们不理解,但我想我的评论会受到鞭挞。我想他们想要的是对“不工作”的定义。。。假设“不工作”;否则,你就不会在这里了。:)它会抛出错误吗?DOM中是否缺少预期的HTML元素?描述你预期会发生什么,以及发生了什么。一个特定的用例也有助于确定iFrame的使用是否适合您的目标。这项技术的最终用户需求是什么?嗯,简单想一想:您是否尝试过两次使用两个不同的xpage而不是同一个xpage?这会有什么不同吗?感谢您提供有关context.getUrl()缓存的信息。在我的例子中,url参数只是在部分刷新“失败”时添加的,这就是为什么我认为它很重要。但是,正如您所说的代码对您有效,我做了更多的测试,发现问题不在于部分刷新本身,而在于页面的提交。我将在一个新问题中描述提交问题,并结束此问题。给您带来的不便,我真的很抱歉。
facesContext.getExternalContext().getRequest().getQueryString();