是否可以延迟加载 xpage 上的某些控件?
这就是问题所在:假设您有一个执行全文搜索并在重复控件中显示结果的控件。此 ft 搜索可能需要很长时间,并且会使网页加载处于等待状态,直到搜索结果准备就绪。
我希望我的页面一开始就加载大部分数据,一些“耗时”的控件应该在初始加载后作为单独的请求加载到页面中。
这样用户会立即看到网页,但页面上的一些数据会稍后加载,而不会使网页处于等待服务器的状态。
可能吗?
最佳答案
使用渲染的缺点是所有值绑定(bind)仍然会计算,即使相应的标记没有发送到页面。所以这里的技巧是确保组件不存在,直到您希望它们存在。
每个组件都有一个 getChildren() 方法。这将返回一个可变的组件列表,它有一个 add() 方法。这允许您在页面加载时或稍后在事件期间动态地将组件添加到页面。出于您要尝试执行的操作的目的,您可能希望将添加“昂贵”组件推迟到后续事件。
创建一个直接附加到 View 根 () 的事件处理程序,给它一个唯一的 ID(例如“loadExpensiveComponentsEvent”,将其刷新模式设置为部分,将刷新 ID 设置为将包含搜索结果的任何 div 或面板,以及将其事件名称设置为任意事件(例如“loadExpensiveComponents”)。这可以防止您的事件被实际用户行为触发。将事件的代码设置为将注入(inject)您的组件的 SSJS。
然后添加一个脚本 block (),在页面加载完成后触发事件:
XSP.addOnLoad(函数(){ XSP.firePartial(null, "#{id:loadExpensiveComponentsEvent}"); });
您的页面将在没有搜索结果组件的情况下加载。页面完全加载后,将自动触发组件注入(inject)事件。
有关如何编写注入(inject)事件代码的指南,请打开从现有页面生成的 Java 文件,以查看需要注入(inject)哪些组件以及将其值设置为什么。
关于ajax - 我可以将 xPage 上的某些控件的加载延迟到页面加载后吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9360307/