简单表单校验排查

检查html结构

  1. 打开界面,右击查看源代码,先确认界面上的字段是否在form元素中。例如下图代码所示。EC的校验是在FORM表单中通过指令 g-validator引入校验文件的。
    <form autocomplete="off"  name="forma" g-validator="TestCaseNewHot107_Default" validator-config-key="$wms" data-invalid-msg="tooltipMessenger" role="form" g-tabindex  >
  1. 需要注意的是,在复杂页面配置的时候注意FORM表单之间没有嵌套。

检查校验文件

  1. 检查完html,可以确认下加载页面的时候是否有引入校验文件。此时可以按住F12快捷键或者是右击【检查】进入开发者模式。
  2. 选择面板source,按【ctrl+P】打开校验文件,即上述html中指令g-validator方法中的值。本文档为TestCaseNewHot107_Default。如果打开文件无格式化,可以通过下图三进行格式化js操作。
    检验排查方式
  3. 确认js文件中是否有配置的校验文件的字段,且校验字段的property是否和html中的name一致。【备注:未配置视图级一般为下面的G类型校验】

* 检验类型为G(平台原先模式),name字段与校验属性property一致,即【对象.属性】
* 检验类型为M(EC架构默认模式),主表name字段与校验属性property一致,即【属性】,子表name字段由校验文件combineName和property组合,即【子对象属性.属性名】
* 例如本例子中的商品名称代码,例子的校验类型为G类型

    {
        property: "testCaseNewHot107.itemName",
        ruleName: "require",
        message: "Require.testCaseNewHot107.itemName"
    }
  1. 选择面板source,按【ctrl+P】打开校验文件,格式为【entity-业务对象_default.js】文件,此文件为校验对应的提示信息文件。例如本例子中的商品名称会生成如下文件。
    "Require.testCaseNewHot107.itemName": "【商品名称】不能为空"

简单调试步骤

  1. 选择面板source,按【ctrl+P】打开页面的js文件,此处以新增页面为例子:格式【业务对象AddBsCtrl.JS】文件
  2. 点击【ctrl+F】查找的save方法,进入到保存共用方法_commonSaveOrUpdateTestCaseNewHot107中找到_this.formVerify($scope.formArrays);这行代码,此代码为表单校验的代码。
    校验排查5
  3. 鼠标悬浮到$scope.formArrays。根据上面的html结构form元素的name属性,可获得form对象:$scope.forma。检查form属性是否有校验字段,如若不存在,则需要检查HTML结构是否有误。
    校验排查1
  4. 在scope中打开forma,接着打开$error中的require对象,可以看到里面的未通过的校验。(备注:下图为在console中输出截图)
    校验排查7
  5. 如果还无法看到对应的校验,可打开校验文件/static/app/framework/directive/GillionValidatorConstructor.js文件中根据校验类型断点对应校验的方法,查看校验是否有触发,如若触发是哪里导致校验不一致。
    校验排查8
  6. 如若校验未触发,表示没有正常创建该校验的ControlValidator,可断点调试GillionValidatorConstructor.jsapplyValidator方法(建议用条件断点)