转换器对象

JSF 转换器用于在 JSF 格式化字符串值与 JavaScript™ 类型化值之间进行转换。例如,数字转换器可以将字符串“$ 1,000.00”(这可以是输入字段值)转换为 JavaScript 数字。

使用转换器

在本质上,JSF 转换器是 Java™ NumberFormat 和 DateFormat 类的 JavaScript 实现以及 MaskFormat 的实现。这些转换器在使用这些类中某个类格式化的字符串与 JavaScript 类型化值之间进行转换。

其他 JWL 组件在执行字段验证、输入辅助和管理客户端数据时,也将使用 JSF 转换器。自行编写客户端验证代码的开发者也会发现 JSF 转换器非常有用,例如,如果对两个“数字”字段值进行比较,则可使用 JSF 转换器将这些值转换成 JavaScript 成员。

在可以对值进行转换前,需要创建转换器。例如,为使用伊斯兰日历的日期时间(格式为“年/月/日 纪元”)创建转换器:
<script>
     hX_5.addConverter("2", new hX_5.DateTimeConverter("strict:1", "icu4j", "epoch:i", "format:yyyy/MM/dd G"));
</script>
使用此转换器将输入字段值转换为 JavaScript 日期时间对象:
<script>
	var c = hX_5.getConverterById("2");
	var v = document.getElementById("TestField");
	if (c!=null && v!= null) {
		var dt = c.stringToValue(v.value);
		if (dt!=null) {
			alert ("JavaScript object: " + dt);
		} else {
			alert ("Failed: " + 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 cID = hX_5.getBehaviorById("form1:text1", "validate", "onblur").getAttribute("converter");
     var cvt = hX_5.getConverterById(cID);
</script>

用于创建和查找转换器的 hx 调用

每个转换器都是使用 JavaScript 构造函数进行构造,并通过 addConverter 调用添加到页面中。

hX_5.addConverter("id", new hX_5.NameConverter(attributes)); 其中

id

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

name

JSF 组件的名称。

属性

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

要获取转换器对象:

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

id

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

转换器的常用 API 调用

将字符串转换为 JavaScript 对象:

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

cvt

转换器对象

string

要转换的字符串

returns

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

将 JavaScript 对象转换为字符串:

var x = cvt.valueToString(value); 其中

cvt

转换器对象

value

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

returns

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

检索有关上次转换失败原因的信息:

var x = cvt.lastError(); 其中

cvt

转换器对象

returns

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

更改转换器的属性:

cvt.setAttribute("arg"); 其中

cvt

转换器对象

arg

JSF 属性/值字符串。

获取转换器的属性:

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

cvt

转换器对象

argname

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

returns

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

表 1. 转换器对象

转换器

描述

NumberConverter 在包含 Java 格式化数字的字符串与 JavaScript 数字对象之间进行转换
DateTimeConverter 在包含 Java 格式化日期/时间的字符串与 JavaScript 日期对象之间进行转换
MaskConverter 在包含 Java 格式化带掩码字符串的字符串与 JavaScript 字符串对象之间进行转换
相关概念
JSF 窗口小部件库(JWL)
相关任务
将输入组件添加至 Faces JSP 页面

反馈