快速业务通道

怀疑论者的JSF - JSF转换与验证 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
好地处理基本型及类似的类型,但是在处理日期数据时,必须指定转换标签 <f:convertDateTime/>。这个标签基于 java.text 包,并使用短、长和自定义样式。下面是一个例子:

<!-- UserRegistration.jsp --> <h:inputText id="birthDate" value="#{UserRegistration.user.birthDate}">        <f:convertDateTime pattern="MM/yyyy"/> </h:inputText>

这个例子展示了如何用 <f:convertDateTime/> 确保用户的生日可以转换为格式为 MM/yyyy(月/年)的日期对象。请参阅 JSF 的 java.text.SimpleDataFormat (在 参考资料 中),以获取模式列表。

其他样式

除了可以转换日期和时间格式外,JSF 还提供了处理像百分数或者货币数据这类值的特殊转换器。这个转换器处理分组(如逗号)、小数、货币符号等。例如,以下 <f:convertNumber/> 的用法就是处理货币的一种技巧:

<!-- UserRegistration.jsp --> <h:inputText id="salary" value="#{UserRegistration.user.salary}">        <f:convertNumber maxFractionDigits="2"             groupingUsed="true"             currencySymbol="contentquot;             maxIntegerDigits="7"             type="currency"/> </h:inputText>

在图 6 中,可以看到一些格式编排不正确的货币数据,以及所导致的转换错误。

图 6. 使用 f:convertNumber 标签

怀疑论者的JSF - JSF转换与验证 - 编程入门网

怀疑论者的JSF - JSF转换与验证(4)

时间:2011-03-13 IBM Rick Hightower

自定义转换

如果需要将字段数据转换为特定于应用程序的值对象,则需要自定义数据转换,如下面例子所示:

String 转换为 PhoneNumber 对象 (PhoneNumber.areaCode、PhoneNumber.prefix、 ...)。

String 转换为 Name 对象 (Name.first、Name.last)。

String 转换为 ProductCode 对象 (ProductCode.partNum、ProductCode.rev、 ...)。

要创建自定义转换器,必须完成以步骤:

实现 Converter 接口(也就是 javax.faxes.convert.Converter)。

实现 getAsObject 方法,它将一个字段(字符串)转换为一个对象(例如,PhoneNumber)。

实现 getAsString 方法,它将一个对象(如 PhoneNumber)转换为一个字符串。

在 Faces 上下文中注册自定义转换器。

用 <f:converter/> 标签在 JSP 中插入这个转换器。

您可以自己看到如何在 JSF 应用程序生命周期中加入这些步骤。在图 7 中,JSF 在应用请求值阶段调用自定义转换器的 getAsObject 方法。转换器必须在这里将请求字符串转换为所需的对象类型,然后返回这个对象,将它存储在相应的 JSF 组件中。如果该值被返回呈现在视图中,那么 JSF 将在呈现响应阶段调用 getAsString 方法。这意味着转换器还要负责将对象数据转换回字符串表示形式。

图 7. 自定义转换器 getAsObject 和 getAsString 方法

怀疑论者的JSF - JSF转换与验证 - 编程入门网

创建自定义转换器

我们将使用一个案例分析来展示 Converter 接口、getAsObject 和 getAsString 方法的实现,同时还将展示如何在 Faces 上下文中注册这个转换器。

这个案例分析的目的是将一个单字段字符串值转换为一个 PhoneNumber 对象。我们将一步一步地完成这个转换过程。

第 1 步:实现 Converter 接口

这一步实现 Converter 接口。

import javax.faces.convert.Converter; import org.apache.commons.lang.StringUtils; ... public class PhoneConverter implements Converter {   ... }

第 2 步:实现 getAsObject 方法

这一步将一个字段值转换为一个 PhoneNumber 对象。

pu

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号