# 提交验证
在流程应用中,提交验证是一种一次性验证方式,适用于需要在提交时进行复杂验证的场景。与实时验证不同,提交验证在用户点击提交按钮时才会触发,适合涉及后台数据或复杂逻辑的验证。本文将详细介绍如何实现提交验证,并通过示例演示其使用方法。
# 1. 提交验证的特点
# 优点
- 实现简单:只需在提交时执行一次验证逻辑。
- 不易被绕过:验证逻辑在提交时执行,确保数据完整性。
- 适合复杂验证:适用于需要调用后台服务或涉及多字段逻辑的验证。
# 适用场景
- 验证申请金额是否超过预算余额。
- 验证输入的数据是否符合复杂的业务规则。
- 调用后台服务验证数据的唯一性或合法性。
# 2. 提交验证的实现步骤
# 2.1 添加提交验证函数
- 打开表单的 源码。
- 在
initComponent函数后面添加提交验证钩子函数postValidate。
# 2.2 编写提交验证逻辑
- 从表单基础类
Yiez.form.AbstractForm中复制postValidate函数的原型。 - 在表单源代码中粘贴原型,并根据需求修改验证逻辑。
- 示例代码:
initComponent: function () { var me = this; me.callParent(arguments); }, postValidate: function (viewmodel, rootRow, validationGroup) { if (rootRow.data['总金额'] > 500) return '总金额超过了预算'; return true; }
# 2.3 调试提交验证函数
- 在
postValidate函数中添加debugger语句,启用浏览器调试工具。 - 示例代码:
postValidate: function (viewmodel, rootRow, validationGroup) { debugger; //启用调试 if (rootRow.data['总金额'] > 500) return '总金额超过了预算'; return true; } - 在浏览器中打开表单,触发提交验证,查看
viewmodel和rootRow的数据结构。
# 3. 示例:验证总金额是否超过500
# 实现步骤
- 打开表单源代码,找到
initComponent函数。 - 在
initComponent函数后面添加postValidate函数。 - 编写验证逻辑:
initComponent: function () { var me = this; me.callParent(arguments); }, postValidate: function (viewmodel, rootRow, validationGroup) { if (rootRow.data['总金额'] > 500) return '总金额超过了预算'; return true; }
# 测试效果
- 进入流程发起界面,打开表单。
- 输入总金额为
600,点击提交。 - 系统会阻止提交,并显示错误提示:“总金额不能超过500”。
- 输入总金额为
400,点击提交。 - 系统允许提交,表单成功提交。
# 4. 提交验证的注意事项
- 返回值:
- 如果验证通过,返回
true。 - 如果验证失败,返回错误信息(字符串)。
- 如果验证通过,返回
- 调试方法:
- 使用
debugger语句查看viewModel和mainRow的数据结构。
- 使用
- 性能优化:
- 如果验证逻辑涉及后台服务调用,确保接口性能良好,避免影响用户体验。
# 5. 总结
- 提交验证 是一种一次性验证方式,适用于复杂的验证场景。
- 实现方法:
- 在表单源代码中添加
postValidate函数。 - 编写验证逻辑,返回
true或错误信息。
- 在表单源代码中添加
- 调试方法:
- 使用
debugger语句查看表单数据结构。
- 使用
- 适用场景:
- 验证申请金额是否超过预算。
- 调用后台服务验证数据合法性。
通过合理使用提交验证,可以确保表单数据的完整性和业务规则的正确性,同时提升用户体验。