快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
mmediate 属性设置为 true

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

实际的例子

下面,我们将用一个示例应用程序展示所讨论的概念。本月的示例应用程序将展示 JSF 的转换和验证能力。记住,这个示例应用程序非常简单,没有追求一些不必要的面面俱到:无论如何,我们的目的不是构建一个在真实世界中使用的应用程序!这个示例应用程序将展示以下几点:

使用标准 JSF 转换器转换表单字段数据。

使用标准 JSF 验证组件验证表单字段数据。

如何编写自定义转换器和验证器。

如何在 faces-config.xml 文件中注册自定义转换器和验证器。

如何定制默认错误消息。

这个示例应用程序是一个简单的用户注册表单。我们的目标是收集用户数据,比如姓名、年龄、电子邮箱地址和电话号码。然后,我们将展示如何利用 JSF 转换和验证确保收集的数据对于模型是适合的。

这个应用程序使用了三个 JSP 页:

index.jsp 将用户定向到 UserRegistration.jsp。

UserRegistration.jsp 包含应用程序的表单字段。

results.jsp 通知应用程序用户已经注册。

我们将首先分析编写 JSF 转换过程的选择。

JSF 转换

如前所述,转换是确保数据对象或者类型正确的一个过程,因此,我们将字符串值转换为其他类型,比如 Date 对象、基本浮点型或者 Float 对象。可以使用自带的转换器,也可以编写自定义的转换器。

JSF 提供了许多标准数据转换器。也可以通过实现 Converter 接口插入自定义转换器,但是这些将在后面进行介绍。下表显示了 JSF 进行简单数据转换所使用的转换器 id 及其对应的实现类。大多数数据转换是自动发生的。

javax.faces.BigDecimal javax.faces.convert.BigDecimalConverter
javax.faces.BigInteger javax.faces.convert.BigIntegerConverter
javax.faces.Boolean javax.faces.convert.BooleanConverter
javax.faces.Byte javax.faces.convert.ByteConverter
javax.faces.Character javax.faces.convert.CharacterConverter
javax.faces.DateTime javax.faces.convert.DateTimeConverter
javax.faces.Double javax.faces.convert.DoubleConverter
javax.faces.Float javax.faces.convert.FloatConverter

图 4 展示了用户年龄的默认转换。JSF 标签配置如下:

<!-- UserRegistration.jsp -->   <h:inputText id="age" value="#{UserRegistration.user.age}"/>

图 4. 用户注册:年龄的默认转换

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

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

时间:2011-03-13 IBM Rick Hightower

各种情况的转换器

UserRegistration.user.age 表示一个值绑定属性,它的类型为 int。对于基本型或者 BigInteger/ BigDecimal 的绑定,JSF 选择了标准转换器。不过,还可以通过 <f:converter/> 标签,利用一个特定的转换器来增加粒度,如下所示。

<!-- UserRegistration.jsp --> <h:inputText id="age" value="#{UserRegistration.user.age}">        <f:converter id="javax.faces.Short"/> </h:inputText>

在图 5 中,可以看到 JSF 使用标准转换器的场景。在这种情况下,虽然年龄实际上是一个有效的整数,但转换仍然会失败,因为该值不是短整型的。

图 5. 使用 f:converter 标签

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

选择日期格式样式

尽管在默认情况下,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号