快速业务通道

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

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

public class ContactController {   ...   public void persist() {     /* Setup the group into contact. */     contact.setGroup(groupRepository.lookup(selectedGroupId));     /* Turn form off, turn link on. */     form.setRendered(false);     addNewCommand.setRendered(true);     /* Add a status message. */     if (contactRepository.persist(contact) == null) {      addStatusMessage("Added " + contact);     } else {      addStatusMessage("Updated " + contact);     }   }   ...   public void read() {     /* Prepare selected contact. */     contact = selectedContact;     /* Turn form on and the link off. */     form.setRendered(true);     addNewCommand.setRendered(false);     /* Prepare selected group id. */     selectedGroupId = contact.getGroup().getId();     ...     this.selectedTagIds = tagIds.toArray(new Long[tags.size()]);     addStatusMessage("Read " + contact);     persistCommand.setValue("Update");   }   ...

注意,Contact 类添加了一个 group 属性。因此,Contact 与 Group 之间存在多对一关系。

清单 9 中的 read() 方法初始化 this.selectedTagIds,从而在视图中显示所选的列表项。

您已经看到如何用 <h:selectOne> 处理一对一关系。Contact 还与 Tag 形成多对多关系(用 Contact 的 tags 属性表示)。为了处理这个关系,要使用一个 <h:selectManyCheckbox>,见清 单 10:

清单 10. 用来处理 Contact.tags 的 selectManyCheckbox

<h:selectManyCheckbox id="tags"   value="#{contactController.selectedTagIds}">   <f:selectItems value="#{contactController.availableTags}" /> </h:selectManyCheckbox>

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

时间:2011-08-09 IBM Richard Hightower

<h:selectManyCheckbox> 的主要差异是,它绑定到一个 long 数组,而不是绑定到单个 long (见清单 10)。

Java 代码与 清单 8 相似,只是现在要处理所选 ID(long)的数组,而不是处理单个 long,见清单 11:

清单 11. 后端支持 selectManyCheckbox 的 Java 代码

public class ContactController {    ...   private Long[] selectedTagIds;   private TagRepository tagRepository;    ...   public List<SelectItem> getAvailableTags() {     List<Tag> tags = tagRepository.list();     List<SelectItem> list = new ArrayList<SelectItem>(tags.size ());     for (Tag tag : tags) {      SelectItem selectItem = new SelectItem(tag.getId(), tag.getName());      list.add(selectItem);     }     return list;   }    ...   public void persist() {      ...        /* Setup the tags into contact. */     List<Tag> tags = new ArrayList<Tag>(selectedTagIds.length);     for (Long selectedTagId : selectedTagIds) {      tags.add(tagRepository.lookup(selectedTagId));     }     contact.setTags(tags);      ...      }    ...   public void read() {      ...        /* Prepare selected tag IDs. */     List<Tag> tags = contact.getTags()

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