我应该在哪里使用 XSP.endAjaxLoading()?

Where should I use XSP.endAjaxLoading()?

我的 Xpage 加载时间过长。所以客户让我做一个loading indicator。 我搜索并找到 XSP.startAjaxLoading(),我将其放入自定义控件的 onClientLoad 事件中。 但是现在我不知道应该把 XSP.endAjaxLoading() 放在哪里才能让加载屏幕消失。 我尝试在 afterRenderResponse 和 beforeRenderResponse 中使用:view.postScript("XSP.endAjaxLoading()"),因为这个命令是 CSJS,但它不起作用。

提前致谢。

我想你想把它放在 onComplete 事件中。这可能很难找到。您通常需要使用大纲控件来找到它。

我在 NotesIn9 上有一个视频演示,其中有一个例子。

http://www.notesin9.com/2016/02/19/notesin9-188-adding-a-please-wait-to-xpages/?unique=http%3A//www.notesin9.com/2016/02/19/notesin9-188-adding-a-please-wait-to-xpages/

您的尝试 (view.postscript) 仅适用于 full/partial 更新,不适用于页面加载。

您已经使用了 onClientLoad - 它会在您的页面加载完成时执行。我猜你会在一段时间后得到 ajax 动画,而且它不会停止。

您应该制作预加载屏幕 - 非常简单的 XPage,它启动动画并且不关心将其关闭。在 onClientLoad 事件中重定向到您的慢速 XPage。这将丢弃动画。

我强烈推荐使用待机对话框 XSnippet https://openntf.org/XSnippets.nsf/snippet.xsp?id=standby-dialog-custom-control。我将它用作所有 XPage 应用程序的标准。

我用这个答案作为解决方案:
几天前我已经看到它,让我三思而后行的是使用它我应该知道我的 XPages 有什么延迟。我 运行 进行了一些测试并发现了什么,它是对 afterRestoreView 事件中方法的调用,然后我将其迁移到 onClientLoad 事件并使用上面引用的答案中的解决方案。 但是我担心我必须密切关注它,所以如果有人添加了一些代码延迟了 XPages 的另一个事件之一,我必须再次移动它,当然,如果可能的话,如果不可能,我会想出一些不同的东西。

感谢所有的回答和评论。