快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
  ...   public String getAsString(FacesContext facesContext, UIComponent component,      Object value) {     return value == null ? "-1" : "" + ((Group) value).getId();   } }

清单 26 给出 TagConverter 的 getAsString() 方法:

清单 26. TagConverter 的 getAsString() 方法

... public class TagConverter implements Converter {   ...   public String getAsString(FacesContext facesContext, UIComponent component,      Object value) {     return value == null ? "-1" : "" + ((Tag) value).getId();   } }

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

编写了自己的转换器之后,需要让 JSF 在每次遇到导致 Group 或 Tag 的值绑定时使用这些转换器。 这需要在 faces-config.xml 文件中使用 <converter> 元素注册转换器,见清单 27:

清单 27. 在 faces-config.xml 中注册转换器

<converter>   <converter-for-class>     com.arcmind.contact.model.Group   </converter-for-class>   <converter-class>     com.arcmind.contact.converter.GroupConverter   </converter-class> </converter> <converter>   <converter-for-class>     com.arcmind.contact.model.Tag   </converter-for-class>   <converter-class>     com.arcmind.contact.converter.TagConverter   </converter-class> </converter>

清单 27 用 <converter-class> 元素指定转换器类,用 <converter-for-class> 元素 指定转换所针对的类。

让转换器处理一组标记

遗憾的是,转换器不能处理泛型,比如 List<Tag>。JSF 不允许对泛型列表进行转换。(它应 该可以。Java Persistence API [JPA] 可以用 List<Tag> 定义关系。JPA 和 JSF 1.2 都是与 Java EE 5 同时出现的,所以您会认为它们都支持泛型。)为了解决这个问题,可以使用数组。清单 28 演示如何使用 Tag 数组,而不是 List<Tag>:

清单 28. 使用数组代替泛型

public class Contact implements Serializable {    ...    private List<Tag> tags;   public Tag[] getTags() {     if (tags != null) {       return tags.toArray(new Tag[tags.size()]);     } else {       return null;     }   }   public void setTags(Tag[] tags) {     this.tags = Arrays.asList(tags);   } 

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

时间:2011-08-09 IBM Richard Hightower

JSF 检验器

转换和检验的主要用途是,在更新模型数据之前,确保值符合要求。这样,在调用应用程序方法来处 理数据时,就可以对模型的状态做某些假设。通过使用转换和检验,可以集中精力考虑业务逻辑,而不必 为输入数据的限制条件(比如空值检测、长度限制、范围边界等等)操心。

所以,应该在更新模型数据阶段中将组件数据绑定到托管 bean 模型之前执行转换和检验。正如在 “ JSF 应用程序的生命周期” 一节中看到的,在处理检验阶段进行转换和检验 — 先转换,再检验。

在 JSF 中有四种检验形式:

内置的检验组件

应用程序级检验

后端 bean 中的检验方法(内联)

定制的检验组件(它们实现 Validator 接口)

本节解释这些检验形式并演示它们的使用方法。

标准检验

JSF 提供三个标准检验组件:

DoubleRangeValidator:组件的本地值必须是数字类型的;必须处于最小值、最大值或这两者指定的 范围内。

LongRangeValidator:组

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