面板部分刷新时 xpage 性能不佳

Poor xpage performance on panel partial refresh

我有一个非常长的基于 xpage 的表单需要完成,所以我决定将其分解为一组面板,根据复选框组中选中的值呈现或不呈现每个面板。

我的问题是较大的面板(包含 30 个左右的字段)使用复选框字段的 onchange 事件处理程序上的部分刷新需要超过 20 秒才能显示。我以为这只是内容的数量,但如果我从所有面板中完全删除渲染公式,那么包括所有面板内容在内的整个表单最初会在几秒钟内显示出来。

结构是:

<xp:panel id="allPanels">
   <xp:panel id="panel1"></xp:panel>
   <xp:panel id="panel2"></xp:panel>
   <xp:panel id="panel3"></xp:panel>
</xp:panel>

使用 onchange 事件刷新 "allPanels"。

有没有人知道为什么会出现这样的延迟,因为它目前无法使用!

非常感谢

您可以尝试将 execId="YOURCHECKBOXFIELDID" 添加到您的复选框组的事件处理程序,它只会将您的复选框的值发送到服务器以进行部分刷新,而不是所有其他字段。

另外,看看我在这里对类似问题的回答: 这可能有帮助?

事实上,我刚刚注意到 Knut 也提到了 execId 点作为对上述问题的回答!

@DbLookup 的性能特别差,您会在各种可用的博客文章中看到这一点。参见示例 xPages @DbLookup issue。不使用公式语言的 API 性能会更好 - XPages 中没有公式语言引擎,一切都是 Java。 SSJS 映射到 Java 方法; @DbLookups 映射到 多个 Java 方法(对于每个参数)。

另请参阅我的网络研讨会 "Marty, You're Not Thinking Fourth Dimensionally"(2016 年网络研讨会选项卡位于 http://www.tlcc.com/admin/tlccsite.nsf/pages/recorded-xpages-webinars)。什么时候计算是我多年来一直在讨论的一个话题,它准确地解释了为什么它在初始加载时更快。有多种选项可以提高性能。 "Compute on Page Load" 而不是 "Compute Dynamically" 更可取。 view.isRenderingPhase() 可用于在适当的情况下最小化计算次数。另一种选择可能是 运行 onClick 中的代码来设置 viewScope 变量并引用这些变量,而不是 运行 原位查找。