【问题标题】:XPages: beforePageLoad runs more than once... Why?XPages: beforePageLoad 运行不止一次...为什么?
【发布时间】:2015-06-05 03:07:14
【问题描述】:

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

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

  1. 在页面 A 上,我们单击了几下,然后发生了一些 AJAX 调用以从服务器获取数据
  2. 我们切换到页面 B,我们向服务器发出 3 次 AJAX 数据请求
  3. 我们切换回页面A,我们再次单击获取一些数据,并且发生了一个beforePageLoad事件!不用说,页面仍在加载中。
  4. 在同一个页面A上,我们再次点击获取不同的数据,再次触发beforePageLoad!

viewScope丢了,我的page-dependent bean丢了,很奇怪。

我们检查过,但更改专用于 XPage 的内存量并没有改变任何东西。

XPages 9.0.1,仅限浏览器。

有人可以解释一下这种行为:为什么会重复执行 beforePageLoad?我们该如何预防呢?

谢谢!!

【问题讨论】:

标签: java event-handling scope managed-bean


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    相关资源
    最近更新 更多