验证属性

验证属性限制当用户在文本表单中输入数据时被接受的内容。

属性如下所示:

fill

fill 属性表示是否要求用户在每个字段位置中输入数据。有效值为 no(缺省值)和 yes

inputRequired

inputRequired 属性表示是否要求用户在字段中填写数据。有效值为 no(缺省值)和 yes

当属性值为 yes 时,如果用户未在字段中填写任何数据,则 EGL 运行时将显示一条消息,如有关字段属性 inputRequiredMsgKey 的内容所述。

inputRequiredMsgKey

属性 inputRequiredMsgKey 标识一条消息,如果字段属性 inputRequired 设置为 yes 并且用户未能在字段中填写数据时,将显示该消息。

消息表(包含消息的数据表)是在程序属性 msgTablePrefix 中标识的。有关数据表名的详细信息,请参阅 EGL 源格式的 DataTable 部件

inputRequiredMsgKey 的值是一个字符串或文字,它与消息表中第一列的条目相匹配。

如果将数字键与期望字符键的消息表配合使用,则将把该数字转换为字符串。如果将字符串文字与期望数字键的消息表配合使用,则字符串中的值必须是带符号或无符号整数。

isDecimalDigit

isDecimalDigit 属性确定是否检查输入值是否仅包含十进制位,十进制位如下所示:
  0123456789

有效值为 no(缺省值)和 yes

此属性仅适用于字符字段。

isHexDigit

isHexDigit 属性确定是否检查输入值是否仅包含十六进制位,十六进制位如下所示:
  0123456789abcdefABCDEF

有效值为 no(缺省值)和 yes

此属性仅适用于字符字段。

minimumInput

minimumInput 属性指示要求用户在字段中填写的最小字符数(如果用户在字段中填写了任何数据的话)。缺省值是 0

如果用户填写的字符数少于最小字符数,则 EGL 运行时将显示一条消息,如有关字段属性 minimumInputMsgKey 的内容所述。

minimumInputMsgKey

属性 minimumInputMsgKey 标识一条消息,如果用户执行下列操作,则将显示该消息:
  • 在字段中填写数据;并且
  • 填写的字符数小于属性 minimumInputRequired 中指定的值。

消息表(包含消息的表)是在程序属性 msgTablePrefix 中标识的。有关表名的详细信息,请参阅 EGL 源格式的 DataTable 部件

minimumInputMsgKey 的值是一个字符串或文字,它与消息表中第一列的条目相匹配。

如果将数字键与期望字符键的消息表配合使用,则将把该数字转换为字符串。如果将字符串文字与期望数字键的消息表配合使用,则字符串中的值必须是带符号或无符号整数。

needsSOSI

needsSOSI 属性仅用于多字节字段(类型为 MBCHAR 的字段), 并指示当用户在 ASCII 设备上输入类型为 MBCHAR 的数据时,EGL 是否执行特殊检查。有效值为 yes(缺省值)和 no。此项检查确定是否可以正确地将输入转换为主机 SO/SI 格式。

此属性是很有用的,这是因为在转换期间将删除多字节字符串末尾的结尾空格,以允许在每个双字节字符子串两旁插入 SO/SI 定界符。为了正确地进行转换,对于多字节值中的每个双字节字符串,表单字段都必须至少有两个空格。

如果将 needsSOSI 设置为 no,则用户可以填写输入字段,在这种情况下,转换将截断数据而不发出警告。

然而,如果将 needsSOSI 设置为 yes,则当用户输入多字节数据时,结果如下:
  • 由于提供了足够的空格,所以值被接受;或者
  • 值被截断,并且用户接收到警告消息。

如果可能在 z/OS® 或 iSeries™ 系统上使用用户在 ASCII 设备上输入的多字节数据,则将 needsSOSI 设置为 yes

typeChkMsgKey

属性 typeChkMsgKey 标识一条消息,如果输入数据不适合于字段类型,则将显示该消息:

消息表(包含消息的表)是在程序属性 msgTablePrefix 中标识的。有关表名的详细信息,请参阅 EGL 源格式的 DataTable 部件

typeChkMsgKey 的值是一个字符串或文字,它与消息表中第一列的条目相匹配。

如果将数字键与期望字符键的消息表配合使用,则将把该数字转换为字符串。如果将字符串文字与期望数字键的消息表配合使用,则字符串中的值必须是带符号或无符号整数。

validatorDataTable

validatorDataTable 属性(以前是 validatorTable 属性)标识一个验证器表,后者是一个 dataTable 部件,它是与用户输入进行比较的基础。验证器表的使用发生在 EGL 运行时执行基本验证检查(如果执行任何基本验证检查的话)之后。有关下列属性的内容描述了那些基本检查:
  • inputRequired
  • isDecimalDigit
  • isHexDigit
  • minimumInput
  • needsSOSI
  • validValues

在使用 validatorFunction 属性之前进行全部的检验,该属性指定一个验证函数,该验证函数完成跨值验证。

可以指定具有下列任何一种类型的验证器表,如 EGL 格式的 DataTable 部件中所述:
matchInvalidTable
指示用户的输入必须与数据表第一列中的任何值不相同。
matchValidTable
指示用户的输入必须与数据表第一列中的值相匹配。
rangeChkTable
指示用户的输入必须与一个值相匹配,该值至少介于一个数据表行的第一列和第二列的值之间。(范围是包括边界的;当用户的输入与任何行的第一列或第二列的值相匹配时,输入也有效。)

如果验证失败,则显示的消息取决于属性 validatorDataTableMsgKey 的值。

validatorDataTableMsgKey

属性 validatorDataTableMsgKey(以前是 validatorTableMsgKey 属性)标识一个消息,如果用户提供的数据不符合验证器表(这是属性 validatorDataTable 中指定的表)的要求,则显示该信息。

消息表(包含消息的表)是在程序属性 msgTablePrefix 中标识的。有关消息表名的详细信息,请参阅 EGL 源格式的 DataTable 部件

validatorDataTableMsgKey 的值是一个字符串或文字,它与消息表中第一列的条目相匹配。

如果将数字键与期望字符键的消息表配合使用,则将把该数字转换为字符串。如果将字符串文字与期望数字键的消息表配合使用,则字符串中的值必须是带符号或无符号整数。

validatorFunction

validatorFunction 属性(以前是 validator 属性)标识一个验证器函数,该函数是在 EGL 运行时执行基本验证检查(如果执行任何基本验证检查的话)之后运行的逻辑。有关下列属性的内容描述了那些检查:
  • inputRequired
  • isDecimalDigit
  • isHexDigit
  • minimumInput
  • needsSOSI
  • validValues

基本检查先于验证器表的使用(如有关 validatorDataTable 属性的内容所述), 并且所有检查都先于 validatorFunction 属性的使用。由于验证器函数可以执行跨字段检查,并且这样的检查通常需要有效的字段值,所以,此事件顺序很重要。

validatorFunction 值是您编写的验证器函数。可以按以下方式编写该函数:不带参数,并且,如果该函数检测到错误,则它通过调用 ConverseLib.validationFailed 来请求重新显示表单。

如果在指定了两个系统函数的其中一个时验证失败,则显示的消息取决于属性 validatorFunctionMsgKey 的值。然而,如果当指定了您自己的验证器函数时验证失败,则函数不使用 validatorFunctionMsgKey,而是通过调用 ConverseLib.validationFailed 来显示消息。

validatorFunctionMsgKey

属性 validatorFunctionMsgKey(以前是 validatorMsgKey 属性)标识消息,该消息在以下情况下显示:
  • 属性 validatorFunction 指示使用 sysLib.verifyChkDigitMod10 或 sysLib.verifyChkDigitMod11;并且
  • 指定的函数指示用户的输入出错。

消息表(包含消息的表)是在程序属性 msgTablePrefix 中标识的。有关表名的详细信息,请参阅 EGL 源格式的 DataTable 部件

validatorFunctionMsgKey 的值是一个字符串或文字,它与消息表中第一列的条目相匹配。

如果将数字键与期望字符键的消息表配合使用,则将把该数字转换为字符串。如果将字符串文字与期望数字键的消息表配合使用,则字符串中的值必须是带符号或无符号整数。

validValues

validValues 属性(以前是 range 属性)指示对用户输入有效的一组值。此属性用于数字或字符字段。此属性的格式如下所示:
  validValues = arrayLiteral
arrayLiteral
单值和双值元素的数组文字,如以下示例中所示:
  validValues = [ [1,3], 5, 12 ]
  validValues = [ "a", ["bbb", "i"]] 
每个单值元素包含一个有效值。每个双值元素包含一个范围:
  • 对于数字,最左边的值是最低的有效值,最右边的值是最高的有效值。在前一示例中,值 1、2 和 3 对于类型为 INT 的字段是有效的。
  • 对于字符字段,用户输入将与一定范围的值进行比较(只要可以对字符数进行比较)。例如,范围 ["a", "c"] 包括(有效)其首个字符为“a”、“b”或“c”的任何输入。尽管字符串“cat”在整理顺序中大于“c”,但“cat”是有效输入。
    一般规则如下所示:如果范围中的第一个值被称为 lowValue 并且第二个值被称为 highValue,则用户的输入在满足下列任何测试时有效:
    • 用户输入等于 lowValuehighValue
    • 用户输入大于 lowValue 并小于 highValue
    • 输入字符的首字符与 lowValue 中的字符的首字符相匹配(只要可以进行比较)
    • 输入字符的首字符与 highValue 中的字符的首字符相匹配(只要可以进行比较)
其它示例如下所示:
  // valid values are 1, 2, 3, 5, 7, 9, and 11
  validValues = [[1, 3], 5, 7, 11]

  // valid values are the letters "a" and "z"
  validValues = ["a", "z"]

  // valid values are any string beginning with "a"
  validValues = [["a", "a"]]

  // valid values are any string 
  // beginning with a lowercase letter
  validValues = [["a", "z"]]

如果用户的输入超出指定的范围,则 EGL 运行时将显示一条消息,如有关字段属性 validValuesMsgKey 的内容所述。

validValuesMsgKey

属性 validValuesMsgKey(以前是 rangeMsgKey 属性)标识一条消息,如果设置了字段属性 validValues 并且用户在字段中填写了超出范围的数据,则将显示该消息。

消息表(包含消息的表)是在程序属性 msgTablePrefix 中标识的。有关表名的详细信息,请参阅 EGL 源格式的 DataTable 部件

validValuesMsgKey 的值是一个字符串或文字,它与消息表中第一列的条目相匹配。

如果将数字键与期望字符键的消息表配合使用,则将把该数字转换为字符串。如果将字符串文字与期望数字键的消息表配合使用,则字符串中的值必须是带符号或无符号整数。

此属性仅适用于数字字段。

相关概念
文本表单

使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.