All +
All -
javaquiz-rest
- + -第一步:创建案例
- 使用随书源码在NetBeans中创建项目
- + -第二步:运行案例
- 在IDE中运行该案例
- 案例默认打开的首页页面是index.xhtml
- + -首页上显示的内容
- + -与案例javaquiz中的首页文件相比,区别是
- 该页面多一个链接:Skip
- 注意:在下面的阅读过程中,要重点关注它的区别点
- + -与案例javaquiz中的首页文件相比,区别是
- + -第三步:阅读案例结构
- + -第一层面:视图
- 与案例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中的同名文件内容相同
- + -index
- + -页面文件
- + -第二层面:控制
- + -页面控制器
- + -QuizBean功能
- 1)获取当前问题是问题集合中的哪一个:getCurrentProblem() : int
- 2)设置当前问题在问题集合中的下标:setCurrentProblem(int newValue)
- 3)获取链接“Skip”的“结果”:getSkipOutcome() : String
- 4)其余方法头同案例javaquiz的相同,但是方法体有些不同(这些内容超出了JSF范围,所以不做分析)
- + -QuizBean功能
- + -数据控制器
- + -QuizBean功能
- 参见其作为“页面控制器”的功能描述
- + -QuizBean功能
- + -页面控制器
- + -第三层面:模型
- 与案例javaquiz的相同
- + -第四层面:配置
- 与案例javaquiz的一致
- + -发现新功能
- + -在页面文件中,除了done以外,都有一个链接“Skip”
- 作用是:跳过该问题,进入下一个问题
- 如果当前问题是问题集中的最后一个,那么就进入done页面
- + -在页面文件中,除了done以外,都有一个链接“Skip”
- + -第一层面:视图
- + -第五步:案例中使用的新技术
- + -第一层面:视图
- + -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">
- 例如:
- + -*不需要视图参数标签,而在“结果”字符串中指定参数
- + -1,“视图参数”标签:f:viewParam
- + -其它页面
- 略
- + -index.xhtml
- + -第二层面:控制
- + -QuizBean
- + -*创建了一个int类型的数组
- 其size为问题集中存放问题的个数
- + -*计分方式
- + -在方法answerAction中
- 如果答案正确,将在数组中的某个下标处添加数值1,而这个下标数采用与当前问题在问题集中的下标数
- 如果答案错误,将在数组中的某个下标处添加数值0,而这个下标数采用与当前问题在问题集中的下标数
- + -在方法answerAction中
- + -*获取得分的方式
- + -在方法getScore中
- 轮询int数组中的元素,并且将其累加
- + -在方法getScore中
- + -*创建了一个int类型的数组
- + -QuizBean
- + -第三层面:模型
- + -Problem
- 与案例javaquiz相同
- + -Problem
- + -第四层面:配置
- 与案例javaquiz相同
- + -第一层面:视图