java - XPage:在进行部分刷新时优化大型表单

标签 java xpages

我们有一个 XPage 应用程序,其中包含很多表单。一切都是动态的,这意味着表单内容来自 Notes 中的一个或多个表单定义文档(可以说我们构建了自己的“设计器”环境):字段是动态的、选项卡、列表等......现在,正如它所发生的那样,我们有这个巨大的表单,有一百多个字段,其中许多是下拉菜单,还有很多动态选项。

它可以工作,但速度很慢。当下拉字段更改时,它会触发部分刷新并部分执行最近的选项卡。但是当我们查看日志时,部分执行会影响第一阶段的执行。在渲染过程中,我们的 Java 代码会重新计算整个表单以及所有选项卡上的所有字段。我们已经使用了阶段监听器。

@53.604:APPLY_REQUEST_VALUES,首先遍历所有字段(约 1 秒),然后继续仅遍历一个选项卡上的字段。到目前为止非常棒。

@55.057:PROCESS_VALIDATIONS,仅限选项卡。非常好。

@55.338:UPDATE_MODEL_VALUES,仅限选项卡。膨胀。

@55.495:INVOKE_APPLICATION,仅限选项卡。完美。

@55.651:RENDER_RESPONSE,整个表单已处理。

@59.121:处理结束

我的问题:我们可以在代码中添加一些快捷方式,以便它可以跳过对不更改的选项卡和字段的评估吗?

例如,是否可以使用某些内置方法找出 XPages 是否正在执行部分刷新以及哪个元素的部分刷新?

感谢您的帮助。

最佳答案

选项卡式表格在网络上运行不佳,这是原因之一。我建议进行重构,以便您的应用程序使用“向导式”方法,其中它是单个 XPage,每个选项卡都位于自定义控件上,并且仅加载一个自定义控件。这需要更改导航以重新加载页面,并使用某种后端方法来识别“草稿”(即并非所有选项卡都被访问和验证)并完成。但它也消除了用户完成所有选项卡、提交和“保存”请求失败的风险,这意味着他们将丢失输入的所有内容。

其他可能有好处的方法是使用动态内容控件一次加载一个选项卡(之前访问过的选项卡仍将位于组件树中,但尚未访问的选项卡则不会)或使用 execMode 来限制服务器处理什么。但是,您需要确保需要处理的所有内容都在 execMode 内,因此可能需要对页面进行一些重新组织。

关于java - XPage:在进行部分刷新时优化大型表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51964149/

相关文章:

java - 带有斜杠的 HttpServletRequest 变量与 %2f

java - span 标签背景颜色在 swing 应用程序中不起作用

css - Xpages:提前输入样式都被移动主题搞砸了

xpages - 使用 SSJS 创建 xml 文件

javascript - 如果日期为空,Xpages 如何检查 javascript?

java - 如何绘制路径?我遇到了一个小错误

java - 范围搜索 3 列的字符串

java - NetBeans 不会清理和构建我的项目

不再支持 Java 小程序 - 有什么替代方案? (文件操作-shell命令)

javascript - session.getDatabase 返回 null