当用户选择组合框中的值(onChange事件)时,我有一个Xpage执行部分刷新。组合框实际上是自定义视图组件的过滤器选择器。 此事件触发一些SSJS代码并执行部分刷新。此事件偶尔会中断,可能是因为删除了XPages会话。 执行部分刷新,但不再执行设置viewScope变量的SSJS代码。这会导致视图显示未应用过滤器的所有数据。
我添加了一个print语句作为ssjs函数的第一行。此打印语句不再执行。
我设法通过在打开页面的情况下重新启动http来重现这一点。
查看Chrome devtools中的网络标签,显示partialRefreshPost上的状态200。此外,partialrefresh id似乎也是正确的。
有任何解释吗?
答案 0 :(得分:5)
如果会话超时,服务器重新启动和/或应用程序重建,则会发生这种情况。
如果然后将部分刷新发布到服务器,它就像基于HTTP GET的请求:当前XPage的持久视图“再次被唤醒”,但跳过了一些JSF生命周期阶段(3,4,5) )。用于部分刷新的SSJS代码在跳过的阶段执行,这就是您的控制台上没有打印输出的原因。
[这是一个非常简短的解释。有关更多信息,请查看有关JSF生命周期的XPages Master Classes Videos及其详细信息]