# 提交验证
在流程应用中,提交验证是一种一次性验证方式,适用于需要在提交时进行复杂验证的场景。与实时验证不同,提交验证在用户点击提交按钮时才会触发,适合涉及后台数据或复杂逻辑的验证。本文将详细介绍如何实现提交验证,并通过示例演示其使用方法。
# 一、提交验证的特点
# 优点
- 实现简单:只需在提交时执行一次验证逻辑。
- 不易被绕过:验证逻辑在提交时执行,确保数据完整性。
- 适合复杂验证:适用于需要调用后台服务或涉及多字段逻辑的验证。
# 适用场景
- 验证申请金额是否超过预算余额。
- 验证输入的数据是否符合复杂的业务规则。
- 调用后台服务验证数据的唯一性或合法性。
# 二、提交验证的实现步骤
# 1. 添加提交验证函数
- 打开表单的源码。
- 在
initComponent函数后面添加提交验证钩子函数postValidate。
# 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; }
# 3. 调试提交验证函数
添加调试语句
在postValidate函数中添加debugger语句,启用浏览器调试工具。示例代码:
postValidate: function (viewmodel, rootRow, validationGroup) { debugger; //启用调试 if (rootRow.data['总金额'] > 500) return '总金额超过了预算'; return true; }调试查看
在浏览器中打开表单,触发提交验证,查看viewmodel和rootRow的数据结构。
# 三、示例:验证总金额是否超过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,点击提交。系统允许提交,表单成功提交。
# 四、提交验证的注意事项
- 返回值:
- 如果验证通过,返回
true。 - 如果验证失败,返回错误信息(字符串)。
- 如果验证通过,返回
- 调试方法:
- 使用
debugger语句查看viewModel和mainRow的数据结构。
- 使用
- 性能优化:
- 如果验证逻辑涉及后台服务调用,确保接口性能良好,避免影响用户体验。
# 五、总结
- 提交验证:一种一次性验证方式,适用于复杂的验证场景。
- 实现方法:
- 在表单源代码中添加
postValidate函数。 - 编写验证逻辑,返回
true或错误信息。
- 在表单源代码中添加
- 调试方法:使用
debugger语句查看表单数据结构。 - 适用场景:
- 验证申请金额是否超过预算。
- 调用后台服务验证数据合法性。
通过合理使用提交验证,可以确保表单数据的完整性和业务规则的正确性,同时提升用户体验。