验证器对象

JSF 验证器对字符串值或者诸如字符串、数字或日期之类的 JavaScript™ 对象值进行测试,以确定该值是否符合 JSF 验证规则。例如,日期验证器可以检查是否已将字符串正确格式化为日期并且该日期是否在指定范围内。

其他 JWL 组件在执行字段验证、输入辅助和管理客户端数据时,也将使用 JSF 验证器。

使用验证器

要检查输入字段值是否是数字并且是否有效,请首先创建转换器和验证器。例如,创建整数转换器以及用于检查数字是否介于 18 与 21 之间的验证器:
<script>
     hX_5.addConverter("1", new hX_5.NumberConverter("strict:1", "pattern:##", "locale:,.%‰-€"));
     hX_5.addValidator("2", new hX_5.NumberValidator("required:true", "minimum-bound:18", "maximum-bound:21"));
</script>
使用转换器将输入字段值转换为 JavaScript 数字,然后对其进行验证:
<script>
     var c = hX_5.getConverterById("1");
     var v = hX_5.getValidatorById("2");
     var x = document.getElementById("TestField");
     if (c!=null && v!= null && x!=null) {
         var n = c.stringToValue(x.value);
         if (n!=null) {
         			if (v.validate(n)) {
             	alert ("Number is OK");
                      } else {
             alert ("Number not valid: " + v.lastError());
             }
                  } else {
             alert ("Not a number: " + c.lastError());
         }
     }
</script>
在验证器由 JSF 标记生成的页面中,可以通过从创建该验证器的行为检索该验证器对其进行访问。例如,假定页面包含以下 JSF 标记:
<h:inputText styleClass="inputText" id="text1"
size="6" value="#{myBean.myBigDecimal01}">
     <f:convertNumber pattern="##0.0"/>
     <hx:inputHelperSpinner delta="0.1"/>
     <hx:inputHelperAssist validation="true" errorClass="inputText_Error"/>
     <f:validateDoubleRange minimum="-100.0" maximum="100.0"></f:validateDoubleRange>
</h:inputText>
通过查找行为并从该行为检索验证器 ID,可以检索 JSF 生成的行为所发出的验证器。
<script>
     var vID = hX_5.getBehaviorById("form1:text1", "validate", "onblur").getAttribute("validator");
     var vld = hX_5.getValidatorById(vID);
</script>

用于创建和查找验证器的 hx 调用

hX_5.addValidator("id", new hX_5.NameValidator(attributes)); 其中

id

指定给此验证器的 ID。此 ID 在页面(或门户网站)中的所有已创建验证器中都必须是唯一的。可以将任何字符串值用作此 ID。

validatorName

JSF 验证器的名称。请参阅下面的内容以获取验证器列表。

属性

逗号分隔的属性列表,其中每个属性都是一个加引号的字符串,此字符串包含使用冒号分隔的属性名称和值,例如,"label:MyLabel"。

要获取验证器对象:

var x = hX_5.getValidatorById("id"); 其中

id

指定给此验证器的 ID。此 ID 在页面(或门户网站)中的所有已创建验证器中都必须是唯一的。可以将任何字符串值用作此 ID。

验证器的常用 API 调用

对值进行验证:

var x = vld.validate(value, cvt); 其中

vld

验证器对象。

value

类型为转换器(数字、日期/时间或字符串)的 JavaScript 对象。

cvt

转换器对象

returns

类型为转换器(数字、日期时间或字符串)的 JavaScript 对象。如果不能完成转换,则将返回 NULL 并设置 lastError。

检索有关上次验证失败原因的信息:

var x = vld.lastError();

var x = cvt.stringToValue("string"); 其中

vld

验证器对象。

returns

类型为转换器(数字、日期时间或字符串)的 JavaScript 对象。如果不能完成转换,则将返回 NULL 并设置 lastError。

更改验证器的属性:

vld.setAttribute("arg"); 其中

vld

验证器对象。

arg

JSF 属性/值字符串。

获取验证器的属性:

var x = vld.getAttribute("argname"); 其中

vld

验证器对象。

argname

包含属性的名称的字符串。

returns

类型为转换器(数字、日期时间或字符串)的 JavaScript 对象。如果不能完成转换,则将返回 NULL 并设置 lastError。

表 1. 验证器对象

验证器

描述

NumberValidator 对包含 Java 格式化数字或 JavaScript 数字对象的字符串进行验证
DateValidator 对包含 Java 格式化日期或 JavaScript 日期对象的字符串进行验证
StringValidator 对包含 Java 格式化带掩码字符串或 JavaScript 字符串的字符串进行验证
相关概念
JSF 窗口小部件库(JWL)

反馈