您的位置:首页 > 产品设计 > UI/UE

读《JavaServer Faces 核心编程(第3版)》一书的记录—— 第 3 章 导航——案例 javaquiz-rest

2013-02-01 22:17 411 查看
All +All -
javaquiz-rest

+
-第一步:创建案例

使用随书源码在NetBeans中创建项目

+
-第二步:运行案例

在IDE中运行该案例
案例默认打开的首页页面是index.xhtml
+
-首页上显示的内容

+
-与案例javaquiz中的首页文件相比,区别是

该页面多一个链接:Skip

注意:在下面的阅读过程中,要重点关注它的区别点

+
-第三步:阅读案例结构

+
-第一层面:视图

与案例javaquiz的一致

+
-第二层面:控制

与案例javaquiz的一致

+
-第三层面:模型

与案例javaquiz的一致

+
-第四层面:配置

与案例javaquiz的一致

+
-第四步:阅读案例功能

+
-第一层面:视图

+
-页面文件

+
-index

+
-1,提供“视图参数”:

<f:metadata>

<f:viewParam name="q" value="#{quizBean.currentProblem}"/>

</f:metadata>

1)标签f:metadata
+
-2)子标签f:viewParam

(1)特性name用来指定视图参数的名称
(2)特性value用来指定视图参数的值

+
-2,提供链接组件Skip:

<h:link outcome="#{quizBean.skipOutcome}" value="Skip">

<f:param name="q" value="#{quizBean.currentProblem + 1}"/>

</h:link>

+
-1)标签h:link

(1)特性value用来指定该链接组件在页面上显示的“文本”
(2)特性outcome用来指定该链接组件的“结果”

+
-2)子标签f:param

(1)用来重写视图参数
(2)特性name用来指定参数的名称
(3)特性value用来指定参数的值

3,其余的与案例javaquiz中的同名文件内容相同

+
-success

1,提供链接组件Skip:代码与index中的相同
2,其余的与案例javaquiz中的同名文件内容相同

+
-again

1,提供链接组件Skip:代码与index中的相同
2,其余的与案例javaquiz中的同名文件内容相同

+
-failure

1,提供链接组件Skip:代码与index中的相同
2,其余的与案例javaquiz中的同名文件内容相同

+
-done

1,与案例javaquiz中的同名文件内容相同

+
-第二层面:控制

+
-页面控制器

+
-QuizBean功能

1)获取当前问题是问题集合中的哪一个:getCurrentProblem() : int
2)设置当前问题在问题集合中的下标:setCurrentProblem(int newValue)
3)获取链接“Skip”的“结果”:getSkipOutcome() : String
4)其余方法头同案例javaquiz的相同,但是方法体有些不同(这些内容超出了JSF范围,所以不做分析)

+
-数据控制器

+
-QuizBean功能

参见其作为“页面控制器”的功能描述

+
-第三层面:模型

与案例javaquiz的相同

+
-第四层面:配置

与案例javaquiz的一致

+
-发现新功能

+
-在页面文件中,除了done以外,都有一个链接“Skip”

作用是:跳过该问题,进入下一个问题
如果当前问题是问题集中的最后一个,那么就进入done页面

+
-第五步:案例中使用的新技术

+
-第一层面:视图

+
-index.xhtml

+
-1,“视图参数”标签:f:viewParam

*是元数据标签 f:metadata 的子标签
*必须放置在xhtml文件内部的顶部
+
-*视图参数的作用

这里的“参数名称与值对”相当于GET请求链接的参数,目的是传递参数到下一个视图

+
-2,该页面对视图参数的应用

在标签h:link中使用子标签f:param来重写视图参数

+
-3,“视图参数”的其他使用方式

+
-*不需要视图参数标签,而在“结果”字符串中指定参数

例如:

<h:link outcome="index?q=1" value="Skip">

+
-*在使用视图参数的标签中,应用该标签的特性includeViewParams="true"来包含所有的视图参数到查询字符串中

例如:

<h:link outcome="index" includeViewParams="true" value="Skip">

+
-其它页面



+
-第二层面:控制

+
-QuizBean

+
-*创建了一个int类型的数组

其size为问题集中存放问题的个数

+
-*计分方式

+
-在方法answerAction中

如果答案正确,将在数组中的某个下标处添加数值1,而这个下标数采用与当前问题在问题集中的下标数
如果答案错误,将在数组中的某个下标处添加数值0,而这个下标数采用与当前问题在问题集中的下标数

+
-*获取得分的方式

+
-在方法getScore中

轮询int数组中的元素,并且将其累加

+
-第三层面:模型

+
-Problem

与案例javaquiz相同

+
-第四层面:配置

与案例javaquiz相同
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐