快速业务通道

怀疑论者的JSF: JSF应用程序的生命周期 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
acet 只会关联一个惟 一名字的组件;这样,要在 header facet 中放置一个多链接的组件,您需要使用 panelGroup。panelGroup (与 panelGrid 类似)是一个单独的组件,其中包含了很多子组 件。panelGroup 包含两个链接,如清单 17 所示。

清单 17. panelGroup 组件链接

[listing.jsp] <h:commandLink styleClass="smallLink" action="# {CDManagerBean.sortTitleAsc}">    <h:outputText id="ascTitle" value="asc"/> </h:commandLink> ... <h:commandLink styleClass="smallLink" action="# {CDManagerBean.sortTitleDec}">    <h:outputText id="decTitle" value="dec"/> </h:commandLink>

第一个链接被绑定到控制程序的 sortTitleAsc 方法上,第二个链接被绑定到 sortTitleDec 上。这两个方法如清单 18 所示。

清单 18. panelGroup 链接方法

[StoreController.java ] /** * Uses the store delegate to return * a sorted list of CDs by title (ascending). * * @return asc */ public String sortTitleAsc() {    this.cdModel.setWrappedData(store.findTitleAsc());    return "asc"; } /** * Uses the store delegate to return * a sorted list of CDs by title (descending). * * @return dec */ public String sortTitleDec() {    this.cdModel.setWrappedData(store.findTitleDec());    return "dec"; }

这两个方法都依赖于业务代理返回一个按照正确要求排序后的 java.util.List。注意这 个方法会返回逻辑输出 asc 和 dec。这两个输出在 faces-config.xml 文件中都没有映射。 没有映射的输出会导致重新加载当前的视图;这样,listing.jsp 将会在调用这些方法时重 新进行加载,清单页面也会按照正确的顺序重新显示。

这种方法的优点是它依赖于业务代理进行排序。业务代理又可能会依赖于一个 DAO 对象 ,而后者又依赖于一个数据库查询或 OR 映射查询,这样可以对 CD 进行有效的查询。这种 方法通常比具有一个“智能” GUI 组件的方法更好,后一种方法知道如何对随机的域对象( CD 就是一个域对象)进行排序,因为排序操作是一个经常发生的操作,严格来说,是模型的 一部分(即域对象的一部分),而不是视图的一部分。

正如前面介绍的一样,对标题进行排序和对艺术家进行排序的代码几乎是相同的。作为一 个练习,请自己试图为第四个使用案例编写代码,对艺术家而不是标题进行排序。

怀疑论者的JSF: JSF应用程序的生命周期(12)

时间:2011-04-11 IBM Rick Hightower

即时事件处理

我们要介绍的最后一个主题是即时事件处理。即时事件处理在您不希望(或需要)对整个 页面进行有效性验证来处理用户输入的情况中非常有用。回想一下,示例程序的 cdForm.jsp 页面使用单选按钮来显示一个目录和子目录清单。当最终用户选择一个目录时,cdForm.jsp 页面就会使用 JavaScript 重新生成表单,这样就可以显示子目录清单了。

这是一个即时事件处理的例子,因为整个表单 没有 在调用事件处理程序之前进行有效性 验证。相反,类清单的事件处理程序会生成子目录,并强制 JSF 跳过进行响应的阶段。组件 的事件处理程序通常都是在调用程序阶段执行的。即时事件组件的事件处理程序是在应用请 求值阶段执行的,这发生在其余组件的类型转换和有效性验证之前。

清单 19 显示了在 cdForm.jsp 页面中再次显示的目录清单。

清单 19. cdForm.jsp 中的目录清单

[cdForm.jsp] <h:selectOneRadio id="category" value="#{CDManagerBean.cd.cate

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