快速业务通道

JSF 1.2入门,第2部分 JSF生命周期、转换、检验和阶段监听器 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

JSF 1.2入门,第2部分 JSF生命周期、转换、检验和阶段监听器(11)

时间:2011-08-09 IBM Richard Hightower

所以,如果绑定到一个 int 或 Integer,那么会自动执行转换。清单 19 给出联系人管理应用程序的 一个组件,它直接绑定到 age:#{contactController.contact.age}。

清单 19. 绑定到 age:JSF 自动执行转换

  <%-- age --%> <h:outputLabel value="Age" for="age" accesskey="age" /> <h:inputText id="age" size="3" value="#{contactController.contact.age}"> </h:inputText>

JSF 会为所有原始数据类型、包装器、String 和 Enum 属性执行自动转换。它还会转换日期和数字。 数字可以有许多种格式,所以它的转换器允许指定最终用户将使用的格式。对于日期,也是如此。清单 20 演示如何使用 JSF 转换器将日期转换为指定的格式。

尽管 JSF 在默认情况下可以很好地处理原始数据类型等数据,但是在处理日期数据时,必须指定 <f:convertDateTime/> 转换标记。这个标记基于 java.text 包并使用短模式、长模式和定制模式 。清单 20 演示如何使用 <f:convertDateTime/> 将用户的生日转换为 MM/yyyy(月/年)格式的 日期对象。在 java.text.SimpleDateFormat 的 Java API 文档中可以找到模式的列表(参见 参考资料 )。

清单 20. 指定日期的格式

  <%-- birthDate --%> <h:outputLabel value="Birth Date" for="birthDate" accesskey="b" />   <h:inputText id="birthDate" value="#{contactController.contact.birthDate}">     <f:convertDateTime pattern="MM/yyyy"/>   </h:inputText> <h:message for="birthDate" errorClass="errorClass" />

JSF 的定制转换器

如果需要将字段数据转换为应用程序特有的值对象,就需要定制的数据转换,比如:

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

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

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

将 String 转换为 Group

将 String 转换为 Tags

为了创建定制的转换器,必须:

实现 Converter 接口(也称为 javax.faxes.convert.Converter)。

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

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

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

图 7 说明这些步骤在 JSF 应用程序生命周期中的位置:

图 7. 定制转换器 getAsObject() 和 getAsString() 方法

JSF 1.2入门,第2部分 JSF生命周期、转换、检验和阶段监听器 - 编程入门网

在图 7 中,JSF 在处理检验阶段调用定制转换器的 getAsObject() 方法。在这个方法中,必须将请 求字符串值转换为所需的对象类型,然后将这个对象返回给对应的 JSF 组件。在将值返回到视图时,JSF 在显示响应阶段调用 getAsString 方法。这意味着转换器也负责将对象数据转换回字符串。

JSF 1.2入门,第2部分 JSF生命周期、转换、检验和阶段监听器(12)

时间:2011-08-09 IBM Richard Hightower

实现 Converter 接口

这个示例应用程序的 Contact 领域对象与 Group 之间存在多对一关系,与 Tag 之间存在多对多关系 。在前面(见 清单 9 和 清单 11),在 ContactController 中定义了从 id 值到领域对象的转换。并 不在视图中直接绑定到领域属性,而是在 ContactController 中绑定到 id 字段。如果使用 JSF 转换器 ,就可以减少许多

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号