# 提交验证

在流程应用中,提交验证是一种一次性验证方式,适用于需要在提交时进行复杂验证的场景。与实时验证不同,提交验证在用户点击提交按钮时才会触发,适合涉及后台数据或复杂逻辑的验证。本文将详细介绍如何实现提交验证,并通过示例演示其使用方法。

# 1. 提交验证的特点

# 优点

  1. 实现简单:只需在提交时执行一次验证逻辑。
  2. 不易被绕过:验证逻辑在提交时执行,确保数据完整性。
  3. 适合复杂验证:适用于需要调用后台服务或涉及多字段逻辑的验证。

# 适用场景

  • 验证申请金额是否超过预算余额。
  • 验证输入的数据是否符合复杂的业务规则。
  • 调用后台服务验证数据的唯一性或合法性。

# 2. 提交验证的实现步骤

# 2.1 添加提交验证函数

  1. 打开表单的 源码
  2. initComponent 函数后面添加提交验证钩子函数 postValidate

# 2.2 编写提交验证逻辑

  1. 从表单基础类 Yiez.form.AbstractForm 中复制 postValidate 函数的原型。
  2. 在表单源代码中粘贴原型,并根据需求修改验证逻辑。
  3. 示例代码:
       initComponent: function () {
           var me = this;
           me.callParent(arguments);
       },
       postValidate: function (viewmodel, rootRow, validationGroup) {
           if (rootRow.data['总金额'] > 500)
              return '总金额超过了预算';
    
          return true;
       }
    

# 2.3 调试提交验证函数

  1. postValidate 函数中添加 debugger 语句,启用浏览器调试工具。
  2. 示例代码:
       postValidate: function (viewmodel, rootRow, validationGroup) {
           debugger; //启用调试
           if (rootRow.data['总金额'] > 500)
              return '总金额超过了预算';
    
          return true;
       }
    
  3. 在浏览器中打开表单,触发提交验证,查看 viewmodelrootRow 的数据结构。

# 3. 示例:验证总金额是否超过500

# 实现步骤

  1. 打开表单源代码,找到 initComponent 函数。
  2. initComponent 函数后面添加 postValidate 函数。
  3. 编写验证逻辑:
       initComponent: function () {
           var me = this;
           me.callParent(arguments);
       },
       postValidate: function (viewmodel, rootRow, validationGroup) {
           if (rootRow.data['总金额'] > 500)
              return '总金额超过了预算';
    
          return true;
       }
    

# 测试效果

  1. 进入流程发起界面,打开表单。
  2. 输入总金额为 600,点击提交。
  3. 系统会阻止提交,并显示错误提示:“总金额不能超过500”。
  4. 输入总金额为 400,点击提交。
  5. 系统允许提交,表单成功提交。

# 4. 提交验证的注意事项

  1. 返回值
    • 如果验证通过,返回 true
    • 如果验证失败,返回错误信息(字符串)。
  2. 调试方法
    • 使用 debugger 语句查看 viewModelmainRow 的数据结构。
  3. 性能优化
    • 如果验证逻辑涉及后台服务调用,确保接口性能良好,避免影响用户体验。

# 5. 总结

  • 提交验证 是一种一次性验证方式,适用于复杂的验证场景。
  • 实现方法
    1. 在表单源代码中添加 postValidate 函数。
    2. 编写验证逻辑,返回 true 或错误信息。
  • 调试方法
    • 使用 debugger 语句查看表单数据结构。
  • 适用场景
    • 验证申请金额是否超过预算。
    • 调用后台服务验证数据合法性。

通过合理使用提交验证,可以确保表单数据的完整性和业务规则的正确性,同时提升用户体验。