快速业务通道

JSF 2简介:JSF向导 - 编程入门网

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

JSF 2简介:JSF向导

时间:2010-10-26 IBM David Geary

Java™ Enterprise Edition (Java EE) 6 包含了很多像 JSF 2 这样功能强大的技术。Contexts and Dependency Injection(CDI)是这些技术中的一个,它在很大程度上标准化了在其他框架酝酿多年的一些概念。

在本文中,我向您展示如何综合使用 JSF 2 和 CDI 来实现一个在线小测验向导。CDI 为我带来了依赖注入、producer 方法和一个 conversation 作用域。我使用了这三者来实现一个向导,您可以轻松地将其用于任何一个多选的在线测试。

本系列并非只关注于 CDI。我将介绍如何:

使用 facelets 模板来最小化代码并最大化重用

Ajax 化向导以便获得更为顺畅的用户体验

使用 CDI 的依赖注入来简化代码

实现并使用 CDI producer 方法来在视图中无缝地使用 beans

利用 CDI 的 conversation 作用域来实现多请求用户用例

本文中的全部示例源代码均可下载得到。请参见 运行示例代码 侧栏获得下载链接以及指向部署指导的一个指针。

测验向导

图 1 显示了运行中的这个测验向导:

图 1. 测验向导

最初,这个应用程序只包含一个可开启向导的单独链接:<h:commandLink value="#{msgs.startWizard}" action="#{wizard.start}"/>。这个链接的文本(Start the wizard)来自一个属性文件并由该链接值内的 msgs.startWizard 表达式代表。国际化是 JSF 101 circa 2004,所以我在这里就不再过多涉及这些细节了。只需注意到整个应用程序都是本地化了的就足够了,并且所有字符串均从 messages.properties 文件拉出。

Start the wizard 链接会将用户带到这个测验向导页面,在这里,用户会被提问,一次一个问题,如 图 1 底部的两个图片所示。我通过一些简单的 Ajax 和一个服务器端 bean 控制此向导按钮的启用状态,我在本文的 Ajax 部分将向您详示。

图 2 显示了最后的一个问题,后跟用户答案的一个总结。当用户处于最后一个问题时,只有 Finish 按钮是启用的;单击该按钮会将用户带到总结页面。

图 2. 总结页面

JSF 2简介:JSF向导(2)

时间:2010-10-26 IBM David Geary

了解了这个测验向导如何工作后,我将向您展示它是如何实现的。

测验应用程序

这个测验应用程序的文件如图 3 所示:

图 3. 此应用程序的文件

我用一个 JSF 2 模板(/templates/wizardTemplate.xhtml)实现此测验向导,向导视图(/quizWizard/wizard.xhtml)使用了这个模板。

除了上述模板和视图外,我还有针对向导的每个组成块的 facelets — 全部处于 quizWizard 目录:

头部(/quizWizard/heading.xhtml)

问题(/quizWizard/question.xhtml)

单选按钮(quizWizard/choices.xhtml)

Next、Previous 以及 Finish 按钮(quizWizard/controls.xhtml)

index.xhtml facelet 用 Start the wizard 链接启动这个应用程序,而 done.xhtml facelet 则显示了问题和答案的总结。

对于客户机,就介绍这么多。在服务器上,应用程序有三个 bean,我们接下来将讨论其中的两个。

此应用程序的两个 question bean

Question bean,如清单 1 所示,实际上是一个问题、一组答案选项以及一个答案:

清单 1. Question bean

package com.clarity; import java.io.Serializable; public class Question implements Serializable {   private static final long serialVersionUID = 1284490087332362658L;   private String question, answer;   private String[] choices;   private boolean answered = false; // next button is enabled when answered is true   public Question(String question, String[] choices) {    this.ques

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