第一部分 JSF的架构 1
第1章 JSF模式与架构 3
1.1 概述 3
1.2 MVC与用户界面 4
1.2.1 MVC模式 4
1.2.2 适用于Web的MVC Model-2 8
1.3 实现MVC 9
1.3.1 Swing的坍塌式MVC策略 10
1.3.2 Struts的Model-2 MVC策略 11
1.3.3 JSF基于组件的Model-2 MVC策略 18
1.4 复合组件 26
1.4.1 Composite模式 27
1.4.2 Swing组件和容器 29
1.4.3 Struts与Tiles 33
1.4.4 JSF组件树 36
1.5 组件事件 38
1.5.1 Observer模式 38
1.5.2 Swing事件侦听器 40
1.5.3 Struts应用级事件 43
1.5.4 JSF事件 44
1.6 总结 46
第2章 JSF的各元素 47
2.1 概述 48
2.1.1 Web开发 48
2.2 UI组件 49
2.2.1 标准UI组件 50
2.2.2 标识符 53
2.2.3 UI组件树 54
2.2.4 组件树操作和导航 55
2.2.5 Facet 56
2.2.6 通用属性 60
2.2.7 数据Model 61
2.3 数据验证 62
2.3.1 验证器 62
2.3.2 验证器注册 67
2.3.3 标准验证器 68
2.4 转换 69
2.4.1 转换器 69
2.4.3 标准转换器 72
2.4.2 注册转换器 72
2.5 事件与侦听器 73
2.5.1 UI事件 73
2.5.2 侦听器 74
2.5.3 阶段标识符 75
2.5.4 事件排队和广播 76
2.6 渲染 76
2.6.1 托管渲染 76
2.6.2 Render Kit 78
2.6.3 注册渲染器 78
2.6.4 标准RenderKit 79
2.7 总结 80
3.1 综述 81
第3章 JSF的请求处理生命周期 81
3.1.1 Faces请求生成Faces响应 83
3.1.2 非Faces请求生成Faces响应 83
3.1.3 Faces请求生成非Faces响应 84
3.1.4 非Faces请求生成非Faces响应 85
3.2 Faces上下文 85
3.2.1 访问上下文 86
3.2.2 组件树 86
3.2.3 外部上下文 87
3.2.4 流程控制 88
3.2.5 本地化 88
3.2.6 消息队列 90
3.3 事件队列 93
3.4 标准JSF请求处理生命周期 95
3.4.1 恢复视图 96
3.4.2 应用请求值 97
3.4.3 处理验证 98
3.4.4 更新Model数值 100
3.4.5 调用应用 101
3.4.6 渲染响应 101
3.5 总结 103
第二部分 JSF的各元素 105
第4章 配置JSF 107
4.1 概述 107
4.2 起步 108
4.3 示例应用的介绍 108
4.4.1 Web应用的结构 110
4.4 Web应用的简述 110
4.4.2 Web应用部署描述文件 113
4.5 配置JSF Web应用 114
4.5.1 FacesServlet映射 115
4.5.2 JSF应用配置文件 116
4.5.3 必需的类与资源 117
4.6 配置JSF应用 119
4.6.1 配置文件的格式 119
4.7 JSF配置的工具支持 152
4.8 构建JSF示例应用 153
4.9 总结 154
第5章 在JSF中集成JSP 155
5.1 概述 155
5.2 JSF/JSP集成的快速示例 156
5.3 JSP集成以及渲染响应阶段 160
5.3.1 新的JSF请求 160
5.3.2 后续的JSF请求 166
5.4 HSF-JSP集成示例 167
5.5 总结 173
第6章 UI组件 175
6.1 概述 176
6.2 使用组件 177
6.2.1 View 184
6.2.2 Subview 186
6.2.3 数值绑定 189
6.2.4 在Model property和UI字符串之间进行转换 198
6.2.5 处理提交的表单数值 201
6.3 验证器 202
6.4 配置事件侦听器 203
6.5 使用表格 208
6.5.1 使用Facet 209
6.5.2 dataTable示例 210
6.5.3 使用panelGrid 216
6.6 使用选择列表 218
6.7 总结 222
第7章 导航、动作与侦听器 223
7.1 概述 223
7.2 动作与导航 224
7.2.1 实现应用action 227
7.2.2 指定导航规则 229
7.3 使用表单 230
7.3.1 复杂表单 235
7.3.2 复杂导航 252
7.4 事件和侦听器 261
7.4.1 实现ActionListener方法 262
7.4.2 实现ActionListener接口 265
7.4.3 实现ValueChangeListener方法 268
7.4.4 实现ValueChangeListener接口 271
7.5 总结 274
第8章 验证与转换 275
8.1 综述 275
8.2 使用转换器 277
8.2.1 在输入标记中设置转换器的属性 280
8.2.2 标准转换器 283
8.3 使用自定义转换器进行验证 285
8.3.1 显示错误消息 289
8.3.2 注册转换器 289
8.3.3 使用转换器来验证自定义数值类型 290
8.3.4 按类型注册转换器 293
8.4 使用验证器 296
8.4.1 在JSP中加入验证器绑定 297
8.4.2 验证器方法 299
8.4.3 显示错误消息 300
8.5 创建自定义验证器 300
8.5.1 为自定义验证器添加属性 302
8.5.2 创建自定义验证器标记 305
8.6 转换和验证处理 309
8.7 总结 312
第三部分 应用JSF 313
第9章 建立JSF应用 315
9.1 概述 315
9.2 架构概述 316
9.3 在架构中的JSF 318
9.4 连接View,Controller和Model对象 319
9.5 iBank账单支付应用 320
9.5.1 登录界面 321
9.5.2 账户概要 322
9.5.3 浏览支付历史记录 323
9.6 登录iBank 324
9.6.1 配置 328
9.6.2 登录的两层模型 330
9.6.3 登录的三层模型 332
9.7 欢迎进入iBank 335
9.8 生成iBank支付 337
9.9 查看iBank支付 339
9.10 总结 344
第10章 自定义JSF组件 345
10.1 概述 345
10.2 什么是自定义组件 346
10.2.1 聚合组件 346
10.2.2 新的HTML生成器 348
10.2.3 新的客户端类型 349
10.3 建立自定义组件的动机 349
10.4 自定义组件的方方面面 351
10.4.1 恢复view 352
10.4.2 应用请求值 353
10.4.3 处理验证 354
10.4.4 更新Model数值 356
10.4.5 调用应用 357
10.4.6 渲染响应 357
10.5 自定义组件示例 358
10.5.1 UIScroller组件的代码 359
10.5.2 UIScroller渲染器的代码 367
10.5.3 UIScroller的JSP标记代码 375
10.6 总结 382
第11章 将Struts应用转换到JSF 383
11.2.1 用况 384
11.1 概述 384
11.2 定义示例问题:SimpleBlogger 384
11.2.2 屏幕设计 387
11.2.3 状态图 388
11.2.4 领域类 389
11.3 SimpleBlogger的Struts版本 390
11.3.1 领域类 390
11.3.2 Struts配置文件 390
11.3.3 JSP页面 392
11.3.4 表单类 395
11.3.5 Action类 398
11.4 SimpleBlogger的JSF版本 401
11.4.1 建立环境 402
11.4.3 将Struts的ActionForm类转换为受控bean 405
11.4.2 拷贝业务Model对象 405
11.4.4 转换JSP页面 408
11.4.5 建立导航Model 420
11.4.6 添加Action处理器 421
11.5 总结 428
附录 Web站点的内容 431
系统需求 431
Windows 432
Linux 432
Macintosh 432
参考文献 433
索引 435