Dorado 5 : 9.Dataset中的校验器 (T1)

对于Web系统来说,最终用户录入数据的有效性判断是必须的。我们知道,在dorado中所有的数据都是由Dataset数据集对象统一管理的,最终用户在页面上通过各种数据绑定类控件所录入的数据最终都会被写入Dataset中。默认情况下,Dataset会自动在用户录入的过程中对数字型、逻辑型、日期时间型等进行录入内容的校验(例如数字型只支持数字型录入,逻辑型只接受true/false录入,日期时间型会自动检测正确的日期时间格式等等)。除此之外,Dataset也支持通过在Field上声明一到多个校验器进行校验方式的扩展。每种校验器都同时支持客户端和服务器端的校验,客户端校验有助于改善客户端的友好性,而服务器端校验则可以真正保证数据的有效性。
目前dorado的最新版本中提供有五种常用的校验器。

  • RequiredValidator 用于检查必填字段是否已输入的校验器。
  • LengthValidator 用于检查用户输入的内容的长度是否在预定的范围内。
  • ListValidator 用于检查用户输入的内容是否在预先提供好的一组备选值当中。
  • RangeValidator 用于检查用户输入的内容是否在预定的范围内(一般用于数字型字段)。
  • PatternValidator 根据开发人员定义好的一个正则表达式来检查用户输入的内容。

准备工作

在sample项目下src目录中新建ViewModel命名validators。然后新建FormDataset命名datasetValidators,并新建Field对象设置label属性。

FieldName

Label

dataType

fieldRequired

非空校验

string

fieldLength

长度校验

string

fieldList

列表校验

string

fieldRange

范围校验

double

fieldPattern

正则表达式

string

表13-04

图13-55
新建AutoForm和DataPilot控件均绑定datasetValidators。

图13-56
最后新建validators相关的JSP页面validators.jsp,打开页面查看效果。

图13-57

RequiredValidator 非空校验

在新建的validators中,设置Required非空校验。步骤:【datasetValidators】—>【fields】—>【fieldRequired】—>【Insert】—>【Validators】—>【Validator-Required】。

图13-58
新建完成后,保存全部修改,刷新页面查看效果。

图13-59
添加Validator-Required校验器之后,在fieldRequired列的label之前出现了一个红色的星号,表示该项必填。由于FormDataset默认情况下会自动插入一条空记录,因此直接点击【验证】查看校验器触发情况。

图13-60
默认情况下,插入记录后在"非空校验"文本框中没有输入任何数据时,点击【验证】会触发Dataset中Field列所声明的校验器。此处提示信息为"字段[非空校验]的内容不能为空",这是默认的提示信息,我们可以自定义需要提示的信息。
在validators中,修改datasetValidators中fieldRequired的Required校验器的errorMessage属性值。

图13-61
保存修改,刷新页面之后同样的方法测试非空校验。

图13-62

Length Validator 长度控制校验

在新建的validators中,设置Length长度控制校验。步骤:【datasetValidators】—>【fields】—>【fieldRequired】—>【Insert】—>【Validators】—>【Validator-Length】。

图13-63
在新建的Length校验器中设置校验规则属性。

属性

备注

maxLength

4

最大不超过4位字符,多于4位的不予显示。

minLength

2

最少不低于2位字符,少于2位的提示校验信息。

errorMessage

输入的字符数≥2,≤4

校验未通过时的提示信息。

表13-05

图13-64
保存全部修改,测试Length校验效果。在validators.jsp页面中的"非空校验"中输入"必填",然后在"长度校验"中输入"L",点击【验证】查看效果。

图13-65
当在"长度校验"中录入字符超过4位字符时,文本框会限制在第4位而不接受输入。特别地,当输入中文字符时,限制是第4个汉字位,即只接受输入4个汉字。

ListValidator 列表控制校验

在新建的validators中,设置List列表控制校验。步骤:【datasetValidators】—>【fields】—>【fieldRequired】—>【Insert】—>【Validators】—>【Validator-List】。

图13-66
设置新建的List列表控制校验器中的属性值。

属性

备注

values

北京,上海,广州

备选列表,只接受列表中给出的值,用英文字符逗号隔开。

errorMessage

输入值只能在"北京、上海、广州"中选择其中一种。

校验未通过时的提示信息。

表13-06

图13-67
保存全部修改,刷新页面后,在"列表校验"中输入"中国"。

图13-68
当输入焦点离开文本框时即触发列表控制校验,弹出自定义的提示信息。点击【确定】后,未通过校验的非法输入字符将被清除。输入预定规则的"北京、上海、广州"中的其中一种将会通过列表控制校验而不弹出提示信息。

RangeValidator 范围控制校验

在新建的validators中,设置List列表控制校验。步骤:【datasetValidators】—>【fields】—>【fieldRequired】—>【Insert】—>【Validators】—>【Validator-Range】。

图13-69
设置新建的Range范围控制校验器中的属性值。

属性

备注

max

1000

输入数字值的最大值

maxMatchRules

not_allow_equals

不允许相等,即<1000

min

100

输入数字值的最小值

minMatchRules

allow_equals

允许相等,即≤100

errorMessage

输入的值范围≥100,<1000。

校验未通过时的提示信息。

表13-07

图13-70
保存全部修改之后刷新页面,在"范围校验"中输入"1000",查看效果。

图13-71
由于我们设置的Range范围校验规则是not_allow_equals即<1000,因此输入的1000并不符合预定义的规则,弹出校验提示信息。点击【确定】自动清除未通过校验的非法输入数字。同样的,输入的值<100时也会弹出校验提示信息,提醒输入的值必须≥100。

PatternValidator正则表达式控制校验

在新建的validators中,设置List列表控制校验。步骤:【datasetValidators】—>【fields】—>【fieldRequired】—>【Insert】—>【Validators】—>【Validator-Pattern】。

图13-72
设置新建的Pattern正则表达式规则校验的属性值。

图13-73
保存全部修改之后刷新页面,在"正则表达式"中输入"BSTEK"查看效果。

图13-74
设置Pattern属性值为正则表达式,本例中设置值为"[\u4e00-\u9fa5]"实现是否中文字符判断。当输入焦点离开时即触发校验动作,输入中文是则通过校验。Pattern属性只需要输入一个正则表达式即可,其他请参考相关资料。