1

我有一个 Xpage,当用户在组合框中选择一个值(onChange 事件)时,它会执行部分刷新。组合框实际上是自定义视图组件的过滤器选择器。此事件触发一些 SSJS 代码并执行部分刷新。此事件偶尔会中断,可能是由于删除了 XPages 会话。部分刷新已执行,但设置 viewScope 变量的 SSJS 代码不再执行。这会导致视图显示未应用过滤器的所有数据。

我添加了一个打印语句作为 ssjs 函数的第一行。此打印语句不再执行。

我设法通过在页面打开的情况下重新启动 http 来重现这一点。

查看 Chrome devtools 中的网络选项卡会在 partialRefreshPost 上显示状态 200。部分刷新 id 似乎也是正确的。

有什么解释吗?

4

1 回答 1

5

如果会话超时、重新启动服务器和/或重建应用程序,则会发生这种情况。

如果随后将部分刷新发布到服务器,则类似于基于 HTTP GET 的请求:当前 XPage 的持久视图被“再次唤醒”,但跳过了一些 JSF 生命周期阶段(3、4、5)。用于部分刷新的 SSJS 代码在跳过的阶段执行,这就是为什么您的控制台上没有打印输出。

[这是一个非常简短的解释。有关更多信息,请查看有关 JSF 生命周期的XPages Master Classes Videos及其详细信息]

于 2013-04-16T13:10:15.463 回答