JSF 1.2入门,第2部分 JSF生命周期、转换、检验和阶段****** - 编程入门网
JSF 1.2入门,第2部分 JSF生命周期、转换、检验和阶段******(11)时间:2011-08-09 IBM Richard Hightower所以,如果绑定到一个 int 或 Integer,那么会自动执行转换。清单 19 给出联系人管理应用程序的 一个组件,它直接绑定到 age:#{contactController.contact.age}。 清单 19. 绑定到 age:JSF 自动执行转换
JSF 会为所有原始数据类型、包装器、String 和 Enum 属性执行自动转换。它还会转换日期和数字。 数字可以有许多种格式,所以它的转换器允许指定最终用户将使用的格式。对于日期,也是如此。清单 20 演示如何使用 JSF 转换器将日期转换为指定的格式。 尽管 JSF 在默认情况下可以很好地处理原始数据类型等数据,但是在处理日期数据时,必须指定 <f:convertDateTime/> 转换标记。这个标记基于 java.text 包并使用短模式、长模式和定制模式 。清单 20 演示如何使用 <f:convertDateTime/> 将用户的生日转换为 MM/yyyy(月/年)格式的 日期对象。在 java.text.SimpleDateFormat 的 Java API 文档中可以找到模式的列表(参见 参考资料 )。 清单 20. 指定日期的格式
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() 方法 在图 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |