# 提交验证

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

# 一、提交验证的特点

# 优点

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

# 适用场景

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

# 二、提交验证的实现步骤

# 1. 添加提交验证函数

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

# 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;
    }
    

# 3. 调试提交验证函数

  1. 添加调试语句
    postValidate 函数中添加 debugger 语句,启用浏览器调试工具。

  2. 示例代码

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

# 三、示例:验证总金额是否超过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,点击提交。系统会阻止提交,并显示错误提示:“总金额不能超过500”。

  3. 测试成功
    输入总金额为 400,点击提交。系统允许提交,表单成功提交。

# 四、提交验证的注意事项

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

# 五、总结

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

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