我可以延迟加载xPage上的一些控件到页面加载后

Tho*_*ian 2 ajax delay lotus-domino xpages

是否可以延迟加载xpage上的某些控件?

这就是问题所在:假设您有一个控件来执行fultextsearch并在重复控件中显示结果.这个ft搜索可能需要很长时间,并且会将网页加载到等待状态,直到搜索结果准备就绪.

我希望我的页面最初加载大部分数据,并且一些"耗时"的控件应该在初始加载后作为sperate请求加载到页面中.

这样,用户将立即看到该网页,但页面上的某些数据将稍后加载,而不会使网页处于等待状态,无法从服务器进行.

可能?

Tim*_*ony 6

使用渲染的缺点是所有值绑定仍将进行评估,即使相应的标记未发送到页面也是如此.因此,这里的技巧是确保组件在您需要之前甚至不存在.

每个组件都有一个getChildren()方法.这将返回一个可变的组件列表,它具有add()方法.这允许您在页面加载时或在事件期间稍后随时向页面添加组件.出于您想要做的目的,您可能希望推迟添加"昂贵"组件,直到后续事件.

创建一个直接附加到视图根()的事件处理程序,给它一个唯一的ID(例如"loadExpensiveComponentsEvent",将其刷新模式设置为partial,将刷新ID设置为任何div或面板将包含搜索结果,并设置其事件命名为任意事件(例如"loadExpensiveComponents").这可以防止事件被实际用户行为触发.将事件的代码设置为将注入组件的SSJS.

然后添加一个脚本块()以在页面加载后触发事件:

XSP.addOnLoad(function(){XSP.firePartial(null,"#{id:loadExpensiveComponentsEvent}");});

您的页面将加载而不包含搜索结果组件.页面完全加载后,将自动触发组件注入事件.

有关如何对注入事件进行编码的指导,请打开从现有页面生成的Java文件,以查看需要注入哪些组件以及将其值设置为什么.