当用户使用JSF应用程序的时候,实际上看到的是JSF装饰器根据特定的环境 (比如web浏览器)显示到客户端的内容。为了做到这一点,装饰器必须知道它要显示的组件是什么样的。这时组件还和相应的支持Bean属性关联。这些属性 可以是任何东西――一个字符串可以代表一个姓名,一个日期可以代表出生日。这些属性并不存在包含关系,应为在这之前一个装饰器并不知道如何显示一个对象。
这时候就需要转换器发挥作用,转换器负责把一个对象转换成字 符串,或者从一个输入框将字符串存入对象中。一个转换器可以在多个地方使用。JSF的标准转换提供了诸如日期和数字这样的转换,但是你或者第三方开发商可 以根据需要开发其他的转换器。装饰器(或者组件)一般在编码和解码的时候会用到转换器。
转换器还可以用于完成格式化和本地化的操作。比如DateTime转换器可以将日期转换为段日期,中长日期,长日期或者完整日期几种格式。它可以按照不同的风格显示日期。下面只一个在HtmloutputText组件中设置转换器的例子:
《h:outputtext value="#{user.dateOfBirth}"》
假设,用户的生日是1942年5月4日,如果用户在美国那么HtmloutputText将显示的字符串是“05/04/42”。如果用户是在加拿大那么这个日期则显示“04/05/42”。这个过程如下图所示
转换器非常有用,它不仅可以把对象转换成字符串还提供了其他有用的功能。它除了能够方便的格式化和本地化数据类型,还允许开发人员按照自己的数据模型开发自己的转换器。如何使用标准转换器,以及如何开发自定义转换器将在随后介绍。
No comments:
Post a Comment