校验类型

1.基本功能 1.基本功能

1.1. 非空校验1.1. 非空校验

平台支持配置非空校验,当校验不通过,界面会有红框及文字提示。
QQ截图20191022150049

1.2. 唯一校验1.2. 唯一校验

平台支持配置单个唯一或组合唯一校验,当校验不通过,界面会有红框及文字提示。
唯一性校验-效果1

1.3. 动态必输校验1.3. 动态必输校验

平台支持配置动态必输校验,当条件满足时触发必填校验。例如:如果类型为【二级】时,【动态必输】字段要必填;
动态必输-效果2
如果类型字段为【一级】时,【动态必输】字段不需要必填。
动态必输-效果1

1.4.两个属性比较大小(大于等于)1.4.两个属性比较大小(大于等于)

效果
1、对于日期或者数字,存在比较大小的配置。此时可以用两个属性比较大小校验。
两个属性比较大小-效果1

1.5.唯一性校验1.5.唯一性校验

对于输入的值进行唯一性的校验。

1.6.主子统一保存校验合并1.6.主子统一保存校验合并

主子对象配置了统一保存以后,主对象的检验规则文件、检验消息文件会包含所有的子对象的 检验规则明细. 但是会多一个属性
combineName【值规则为 子对象在主对象的实体类中的 属性名称(testCase201Details)】。

1.7.支持校验提示消息自定义1.7. 支持校验提示消息自定义

平台配置的校验都有默认一套消息提示信息,如果需要自定义消息提示,可直接参考常用扩展3.7. 支持校验提示消息自定义。

1.8.自定义校验配置(正则表达式)1.8.自定义校验配置(正则表达式)

当需要配置校验为正则表达式时,则可在校验中添加对应字段的自定义正则表达式校验。

1.9.数据校验类型1.9.数据校验类型

如果控件有特殊的校验类型,比如邮箱、身份证号码等,可以为控件配置数据校验类型。

平台目前共支持以下16种数据校验类型:

序号 校验类型 代码值
1 英文字符串 ES
2 中文字符串 CS
3 英文、数字字符串 ENS
4 中文、数字字符串 CNS
5 由英文、下划线、数字组成、下划线不能在开头结尾 ENUS
6 由中文、下划线、数字组成、下划线不能在开头结尾 CNUS
7 不能是中文 NCN
8 数字型字符串 NUMC
9 邮箱地址 MAIL
10 电话号码 TEL
11 手机号码 MOB
12 邮编 ZIP
13 Http网址 URL
14 日期字符串 DATS
15 身份证(中国) CHID
16 自定义正则 CUST

1.10.字段长度

1.10.字段长度

平台支持属性字段长度的设置。

1.11.定制校验

1.11.定制校验

如果需要特殊的校验形式,可以在平台上为控件设置定制校验。定制校验种类将在未来平台开发的过程中不断补充,当前提供以下定制校验形式。

实例
数据键入

数据键入校验表现形式为界面中某部分字段的变化,会引起其他字段的变化。数据键入即在数据键入时,调用规则。

1.12.英文字符校验

1.12.英文字符校验

当需要配置校验只能输入英文字符时,则可在校验中添加对应字段的英文字符校验。

1.13.车牌号校验1.13.车牌号校验

当需要配置字段的车牌号校验时,则可在校验中添加对应字段的车牌号校验。

1.14.中文字符长度校验

1.14.中文字符长度校验

中文字符长度校验
tab66

1.15.身份证号校验1.15.身份证号校验

当需要配置字段的身份证号校验时,则可在校验中添加对应字段的身份证号校验。

1.16.uniqueGl唯一性校验

1.16.uniqueGl唯一性校验

关键字

  1. Unique唯一性

注意点

  1. 由于历史原因平台的唯一性校验强制重写了EC的实现,目前考虑拆分为2种 ,Unique EC原始的实现、UniqueGl 平台扩展的实现支持版本控制的唯一性校验
  2. 此配置主要用于平台中的版本控制对象

效果

  1. 唯一性校验的请求为uniqueGl,此唯一性主要是用于平台中的版本控制对象的唯一性校验。
    Unique唯一性校验-效果

1.17.数组不能为空校验1.17.数组不能为空校验

当要检验复选框组、单选框组等以数组类型存储的控件不能为空时,则可在校验中添加对应字段的数组不能为空校验。

2. 配置方法 2. 配置方法

表单中的校验,校验字段都必须配置到form元素中。表格中的校验则不需要加form元素。

2.1. 非空校验2.1. 非空校验

配置

  1. 配置的方法有三种:第一种方式是在建表定义的时候,已经对字段勾选了非空,那么业务对象在同步数据结构的时候会把对应属性勾选非空,此时不必再对该属性配置非空校验,自动会生成非空校验代码在校验文件上。
    QQ截图20191023145857

QQ截图20191023150016
2. 第二种方式是打开对象建模–业务对象管理–业务对象,编辑业务对象,点击【可视化布局】按钮,在布局中选中对应的字段,在右侧菜单栏中勾选【非空】复选框,然后保存。此时不必再对该属性配置非空校验,自动会生成非空校验代码在校验文件上。
3. 第三种方式是在可视化布局上或者业务对象管理页面点击校验配置按钮,弹窗校验配置页面,选择非空校验类型、属性名,然后点击【添加校验】按钮,再点击【保存】按钮即可。
QQ截图20210312185405

代码

校验规则文件:业务对象名(首字母小写)_Defaultjs文件中对应字段会生成require校验规则

define({rules:[{{property:"testCase411.forbidenOubDays",ruleName:"require",message:"Require.testCase411.forbidenOubDays"}]});

校验消息提示文件:entity-业务对象名(首字母小写)_Defaultjs文件中对应字段会生成校验提示消息"Require.testCase411.forbidenOubDays":"【禁售期天数】不能为空"

define({"root":{"Require.testCase411.forbidenOubDays":"【禁售期天数】不能为空"}});

2.2. 唯一校验2.2. 唯一校验

配置

  1. 在可视化布局上或者业务对象管理页面点击校验配置按钮,弹窗校验配置页面,选择唯一校验类型、属性名,然后点击【添加校验】按钮,再点击【保存】按钮即可。如果是组合唯一校验,则勾选多个属性名,且配置的属性名必须配置到可视化界面上,如果部分字段不需要展示则将这些字段的控件类型配置为隐藏控件。
    QQ截图20210316160005

代码

校验规则文件:业务对象名(首字母小写)_Defaultjs文件中对应字段会生成Unique校验规则

define({rules[{{async:true,pkProperty:"testCase411.testCase411Id",ruleName:"unique",message:"Unique.testCase411.weight",entity:"com.gillion.sample.test.domain.TestCase411",properties:["testCase411.weight"]}]});

校验消息提示文件:entity-业务对象名(首字母小写)_Defaultjs文件中对应字段会生成校验提示消息"Unique.testCase411.weight":"【重量】必须唯一"

define({"root":{"Unique.testCase411.weight":"【重量】必须唯一"}});

2.3. 动态必输校验2.3. 动态必输校验

配置

  1. 在可视化布局上或者业务对象管理页面点击校验配置按钮,弹窗校验配置页面,选择动态必输校验类型、属性名,然后点击【添加校验】按钮,在属性名下配置前提条件,勾选【前提条件类型】,然后前提条件的格式为:业务对象(首字母小写).属性名==’值’,),支持同时包含 || &&  不能出现 ()等,例如:testCase411.itemName==’1’或者 为空!testCase411.itemName或者不为空testCase411.itemName
    QQ截图20210312185643

代码

校验规则文件:业务对象名(首字母小写)_Defaultjs文件中对应字段会生成DynaRequire校验规则

define({rules[{{condition:"testCase412.isValuables==X",property:"testCaseNewHot412.tareWeight",ruleName:"dynaRequire",listenProperties:["testCase412.isValuables","testCaseNewHot412.tareWeight"],message:"DynaRequire.testCaseNewHot412.tareWeight"}]});

校验消息提示文件:entity-业务对象名(首字母小写)_Defaultjs文件中对应字段会生成校验提示消息"DynaRequire.testCaseNewHot412.tareWeight":"【皮重】不能为空"

define({"root":{"DynaRequire.testCaseNewHot412.tareWeight":"【皮重】不能为空"}});

2.4.两个属性比较大小(大于等于)2.4.两个属性比较大小(大于等于)

1、 在可视化布局上或者业务对象管理页面点击校验配置按钮,弹窗校验配置页面,选择两个属性比较大小(大于等于)校验类型、勾选两个属性名,然后点击【添加校验】按钮,如果要调整属性名位置,可选中属性名进行左移右移的操作,再点击【保存】按钮即可。
QQ截图20210312185952

2.5.唯一性校验2.5.唯一性校验

这里的唯一性指的是,唯一性字段中的多个字段组合而成的。

配置

  1. 对象建模–业务对象–业务对象管理:编辑业务对象,点击【检验】tab页的【新增】按钮,新增一笔数据,校验名称:自定义、检验类型:唯一性校验
    唯一1

唯一2

2.点击【校验字段】tab页的【新增】按钮,填写属性名称(要校验的属性名称)及顺序,新增要校验的字段。
唯一3

唯一4

代码

后台实体类代码

/** 银行代码 */
@Column(name = "BANK_CODE", nullable =false, length = 50)
@Alphabet(groups = { TestCaseNewHot104Wj.Default.class })
@RichLength(max = 50, min = 0, groups = { TestCaseNewHot104Wj.Default.class })
private String bankCode;

在【业务对象_Default.js】文件中生成的前端校验代码

{property:"testCaseNewHot101Wj04.bankCode",ruleName:"require",message:"Require.testCaseNewHot101Wj04.bankCode"},{min:0,max:50,property:"testCaseNewHot101Wj04.bankCode",ruleName:"richLength",message:"RichLength.testCaseNewHot101Wj04.bankCode"},

在【entity-业务对象_Default.js】文件中生成的前端校验代码

"Unique.testCaseNewHot101Wj04.isDeleted":"【是否删除】,【银行代码】必须唯一",

2.6.主子统一保存校验合并2.6.主子统一保存校验合并

配置

  1. 项目管理–项目初始化–视图级配置:点击【新增】按钮。
    主子校验合并1

2.在配置项类型处选择:检验框架应用类型,配置内容处输入M。
主子校验合并2

3.设置完后点击保存,返回视图管理配置页面,勾选刚才新增的配置项,点击【批量提交】按钮。

2.7. 支持校验提示消息自定义2.7. 支持校验提示消息自定义

配置

  1. 在业务对象下配置一个非空校验,配置可参考校验类型,然后生成代码。
  2. 代码部分参考常用扩展3.7. 支持校验提示消息自定义

2.8.自定义校验配置(正则表达式)2.8.自定义校验配置(正则表达式)

目前控件可以自定义校验,仅支持前端JS正则表达式。

配置

  1. 在可视化布局上或者业务对象管理页面点击校验配置按钮,弹窗校验配置页面,选择自定义正则表达式校验类型、属性名,然后点击【添加校验】按钮,在属性名下配置正则表达式内容,再点击【保存】按钮即可。
    QQ截图20210312190720

代码

后台实体类代码

/** 入库单号 */
@Column(name = "ASN_NO", nullable = true, length = 50)
@RichLength(max = 50, min = 0, groups = { TestCaseNewHot103Wj.Default.class })
private String asnNo;

在【业务对象_Default.js】文件中生成的前端校验代码

{property:"asnNo",pattern:"^[0~9a~zA~Z]+$",ruleName:"pattern",message:"Pattern.testCaseNewHot103Wj.asnNo"},{min:0,max:50,property:"asnNo",ruleName:"richLength",message:"RichLength.testCaseNewHot103Wj.asnNo"},

在【entity-业务对象_Default.js】文件中生成的前端校验代码

"Pattern.testCaseNewHot103Wj.asnNo":"【入库单号】数字或字母开头",

2.9.数据校验类型

2.9.数据校验类型

1.设置数据校验类型

路径:打开需要编辑的业务对象 → 单击[属性定义]标签 → 点击列表中属性前的[编辑 ]按钮 → 打开[编辑属性定义]标签页

下拉选择数据校验的类型,保存设置

点击[保存]按钮保存设置

Ui_6.Check_3.CheckType_1
2. 生成代码

参照配置参考-生成代码

3. 数据校验类型说明

参考数据校验类型说明

2.10.字段长度

2.10.字段长度

1. 设置属性类型

路径:打开需要编辑的业务对象 → 单击[属性定义]标签 → 点击列表中属性前的[编辑 ]按钮 → 打开[编辑属性定义]标签页

输入修改字段长度,保存设置

Ui_6.Check_4.Length_1
2. 生成代码

参照配置参考-生成代码

2.11.定制校验

2.11.定制校验

1. 打开界面控制定义表

路径:打开需要编辑的业务对象 → 单击[编辑页]标签 → 单击列表中需要修改成汇总属性名的[编辑]按钮 → 打开[编辑编辑页]标签页 → 在下方有[控件事件]选项卡。

customize_01
2. 新增控件事件

路径:点击[控件事件]选项卡下[新增]按钮 → 打开[新增控件事件]标签页

定义【事件类型】为【键盘键入】、【执行类型】为【Angular公式】、执行内容】为公式。

说明:Angular公式的填写格式为:业务对象名.属性名1=业务对象名.属性名2*业务对象名.属性名3。如basPackage.basPacakgeVolume= basPackage.basPacakgeLength*basPackage.basPacakgeWidth*basPackage.basPacakgeHeight

customize_02
3. 生成代码

参照配置参考-生成代码

2.12.英文字符校验2.12.英文字符校验

配置

  1. 在可视化布局上或者业务对象管理页面点击校验配置按钮,弹窗校验配置页面,选择只能输入英文字符校验类型、属性名,然后点击【添加校验】按钮,再点击【保存】按钮即可。
    QQ截图20210312191120

代码

后台实体类代码

/** 货主代码 */
@Column(name = "CUST_CODE", nullable = true, length = 50)
@Alphabet(groups = { TestCaseNewHot103Wj.Default.class })
@RichLength(max = 50, min = 0, groups = { TestCaseNewHot103Wj.Default.class })
private String custCode;

在【业务对象_Default.js】文件中生成的前端校验代码

{property:"custCode",ruleName:"alphabet",message:"Alphabet.testCaseNewHot103Wj.custCode"},{min:0,max:50,property:"custCode",ruleName:"richLength",message:"RichLength.testCaseNewHot103Wj.custCode"},

在【entity-业务对象_Default.js】文件中生成的前端校验代码

"Alphabet.testCaseNewHot103Wj.custCode":"【货主代码】由英文字符组成",

2.13.车牌号校验2.13.车牌号校验

配置

  1. 在可视化布局上或者业务对象管理页面点击校验配置按钮,弹窗校验配置页面,选择身份证验证校验类型、属性名,然后点击【添加校验】按钮,再点击【保存】按钮即可。
    QQ截图20210312191246

代码

后台实体类代码

/** 车牌号 */
@Column(name = "WMS_INB_ASN_ID", nullable = false, length = 50)
@CarNumber(groups = { TestCaseNewHot103Wj.Default.class })
@RichLength(max = 50, min = 0, groups = { TestCaseNewHot103Wj.Default.class })
private String wmsInbAsnId;

在【业务对象_Default.js】文件中生成的前端校验代码

{property:"wmsInbAsnId",ruleName:"carNumber",message:"CarNumber.testCaseNewHot103Wj.wmsInbAsnId"},{min:0,max:50,property:"wmsInbAsnId",ruleName:"richLength",message:"RichLength.testCaseNewHot103Wj.wmsInbAsnId"},

在【entity-业务对象_Default.js】文件中生成的前端校验代码

"CarNumber.testCaseNewHot103Wj.wmsInbAsnId":"【车牌号】车牌号格式不正确",

2.14.中文字符长度校验

2.14.中文字符长度校验

配置

QQ截图20210312191340

2.15.身份证号校验2.15.身份证号校验

配置

QQ截图20210312191430

代码

后台实体类代码

/** 身份证号 */
@Column(name = "CARRIER_NAME", nullable = true, length = 200)
@ChinaIdCard(groups = { Default.class })
@RichLength(max = 200, min = 0, groups = { TestCaseNewHot103Wj.Default.class })
private String carrierName;

在【业务对象_Default.js】文件中生成的前端校验代码

{property:"carrierName",ruleName:"chinaIdCard",message:"ChinaIdCard.testCaseNewHot103Wj.carrierName"},{min:0,max:200,property:"carrierName",ruleName:"richLength",message:"RichLength.testCaseNewHot103Wj.carrierName"},

在【entity-业务对象_Default.js】文件中生成的前端校验代码

"ChinaIdCard.testCaseNewHot103Wj.carrierName":"【身份证号】身份证格式不正确",

2.16.uniqueGl唯一性校验

2.16.uniqueGl唯一性校验

PS:uniqueGl唯一性校验是给云平台自己使用的,项目组慎用。

1.在可视化布局上或者业务对象管理页面点击校验配置按钮,弹窗校验配置页面,选择平台唯一性校验类型、属性名,然后点击【添加校验】按钮,如果是组合唯一校验,则可以勾选多个属性名,再点击【保存】按钮即可。
Unique唯一性校验-配置

代码

  1. 在实体对象中生成@UniqueGl注解
@UniqueGl(entityClazz = TestLixq201Tab.class, fields = { "codeType" }, pkField = "testCase201Id", groups = { TestLixq201Tab.Default.class })

2.在【业务对象_Default.js】文件中生成的前端校验代码。

{
async: true,
pkProperty: "testLixq201Tab.testCase201Id",
property: "testLixq201Tab.codeType",
ruleName: "uniqueGl",
message: "UniqueGl.testLixq201Tab.codeType",
entity: "com.gillion.sample.lixq.domain.TestLixq201Tab",
properties: ["testLixq201Tab.codeType"]
}
  1. 在【entity-业务对象_Default.js】文件中生成的前端校验代码。
"UniqueGl.testLixq201Tab.codeType": "【字典类型代码】必须唯一"

1.17.数组不能为空校验2.17.数组不能为空校验

配置

QQ截图20210312191538

代码

后台实体类代码

/** 包装类别 */
@Column(name = "PACKING_CLASS", nullable = true, length = 50)
@NotEmpty(groups = { TestDengpp3101.Default.class })
@RichLength(max = 50, min = 0, groups = { TestDengpp3101.Default.class })
private String packingClass;

在【业务对象_Default.js】文件中生成的前端校验代码

{property:"packingClass",ruleName:"notEmpty",message:"NotEmpty.testDengpp3101.packingClass"},{min:0,max:50,property:"packingClass",ruleName:"richLength",message:"RichLength.testDengpp3101.packingClass"},

在【entity-业务对象_Default.js】文件中生成的前端校验代码

"NotEmpty.testDengpp3101.packingClass":"【包装类别】不能为空",

3.常用扩展

3.常用扩展

3.7. 支持校验提示消息自定义3.7. 支持校验提示消息自定义

平台版本必须是3.25.0.0+。
1. 在二次开发文件ctrl文件中编辑,代码参考如下:

//重写提示语
var $scope = this.scope;
$scope.customValidatorI18ns('CsScoreTemp_Default',{
'Unique.csScoreTemp.tempName':'【模板名称】必须唯一'
});

(1)参数说明scope.customValidatorI18ns(groupName, customI18ns, getResourcePathFunc)
@param {string} groupName – 校验名称
@param {Object} customI18ns – 自定义校验信息
@param {(groupName: string) => string} [getResourcePathFunc]– 可选,根据 groupName 组合加载校验信息文件路径的方法

(2)校验引入文件,html页面表格中的标签data-validator-name中的名称。
(3)如果是表单,校验则对应的为FROM元素中的g-validator中的名称。
(4){}中的参数:key值为校验文件的中名称,可以从【entity-业务对象_Default.js】即校验文件提示信息文件。其中key不能修改,value值可自定义,此处即对应配置中的那个{}中的信息。

4.版本更新 4.版本更新

7.4.1,2021.03.12

优化

  • 校验配置支持直接在可视化上配置。

6.7.2,2020.08.30

优化

  • 云平台动态非空等前置条件判断支持复杂的表达式

5.7.R,2019.09.25

优化

  • 【数组不能为空】校验