XPages:beforePageLoad运行不止一次......为什么?

时间:2015-03-31 17:03:53

标签: java event-handling scope managed-bean

我们有这个XPages应用程序,它有一个母版页(比如M.xsp)和几个子页面,都在主页面上的单独iframe中(在单独的标签中加载为A.xsp,B.xsp和C.xsp) )。一般来说,应用程序运行良好。每个子页面都不应该干扰其他页面,据我所知,它不会。一些与页面相关的数据存储在viewScope变量中,但对于我们开发Managed Beans最重要的部分,其数据也主要在视图范围内。

现在,我们看到以下内容:

  1. 在第A页,我们进行了几次点击,并且发生了一些AJAX调用以从服务器获取数据
  2. 我们切换到页面B,我们向服务器做了3个AJAX数据请求
  3. 我们切换回第A页,我们再点击一次获取一些数据,然后发生beforePageLoad事件!不用说,页面仍然被加载。
  4. 在同一页面A上,我们进行新的点击以获取不同的数据,然后再次触发beforePageLoad!
  5. viewScope丢失,我的页面依赖bean丢失,非常奇怪。

    我们检查过,但更改专用于XPage的内存量并未发生任何变化。

    XPages 9.0.1,仅限浏览器。

    有人可以解释一下这个行为:如何重复执行beforePageLoad?我们怎样才能阻止它?

    谢谢!

1 个答案:

答案 0 :(得分:0)

Twas确实与内存中的最大页数有关。每次单击页面B上列表中的项目时,使用带有项目作为参数的URL将子页面(B1)加载到另一个iframe中。列表中的许多点击强制加载许多页面,导致所有其他页面从内存中消失。因此,当我们回到页面A并在那里触发一些部分刷新时,就好像该页面对于运行时环境来说是新的一样。

我重写了子页面B2以保留在内存中,并在列表值更改时自行进行部分刷新。相当快很快,没有不必要的页面丢弃。