第1章 JSF简介 1
1.1 选用JSF的原因 1
1.2 一个简单例子 2
1.2.1 组成部分 4
1.2.2 目录结构 5
1.2.3 构建JSF应用程序 6
1.2.4 部署JSF应用程序 7
1.3 JSF开发环境 9
1.4 分析示例应用程序 11
1.4.1 bean 12
1.4.2 JSF页面 13
1.4.3 servlet配置 14
1.5 简单了解Ajax JSF 2.0 17
1.6 JSF框架服务 19
1.7 技术内幕 21
1.7.1 呈现页面 21
1.7.2 请求解码 22
1.7.3 生命周期 23
1.8 小结 25
第2章 受管bean 27
2.1 bean的定义 27
2.1.1 bean属性 29
2.1.2 值表达式 31
2.1.3 backing bean 31
2.2 CDI bean CDI 32
2.3 消息包 33
2.3.1 具有可变部分的消息 35
2.3.2 应用程序的区域设置 36
2.4 示例应用程序 37
2.5 bean作用域 42
2.5.1 会话作用域 43
2.5.2 请求作用域 44
2.5.3 应用程序作用域 45
2.5.4 对话作用域CDI 45
2.5.5 视图作用域JSF 2.0 46
2.5.6 自定义作用域JSF 2.0 46
2.6 配置bean 46
2.6.1 注入CDI bean CDI 46
2.6.2 注入受管bean JSF 2.0 47
2.6.3 bean生命周期批注 48
2.6.4 使用XML配置受管bean 48
2.7 表达式语言语法 52
2.7.1 左值和右值模式 53
2.7.2 使用方括号 53
2.7.3 映射和列表表达式 54
2.7.4 调用方法和函数JSF 2.0 55
2.7.5 解析初项 55
2.7.6 复合表达式 57
2.7.7 方法表达式 57
2.7.8 方法表达式参数JSF 2.0 58
2.8 小结 59
第3章 导航 61
3.1 静态导航 61
3.2 动态导航 62
3.2.1 将结果映射到视图ID 63
3.2.2 JavaQuiz应用程序 64
3.3 重定向 73
3.4 REST式导航和书签URL JSF 2.0 75
3.4.1 视图参数 75
3.4.2 获取请求链接 76
3.4.3 指定请求参数 76
3.4.4 将书签链接添加到Quiz应用程序中 78
3.5 高级导航规则 81
3.5.1 通配符 82
3.5.2 使用from-action 83
3.5.3 条件导航情形JSF 2.0 84
3.5.4 动态目标视图ID JSF 2.0 84
3.6 小结 84
第4章 标准JSF标签 85
4.1 JSF核心标签概述 86
4.2 JSFHTML标签概述 88
4.3 面板 96
4.4 标题、正文和表单标签 98
4.5 文本字段和文本区域 103
4.5.1 隐藏字段 106
4.5.2 使用文本字段和文本区域 106
4.5.3 显示文本和图像 108
4.6 按钮和链接 111
4.6.1 使用按钮 113
4.6.2 使用命令链接 117
4.7 选择标签 120
4.7.1 复选框和单选按钮 123
4.7.2 菜单和列表框 125
4.7.3 项目 127
4.8 消息 143
4.9 小结 148
第5章 Facelets JSF 2.0 149
5.1 Facelets标签 149
5.2 Facelets模板 150
5.2.1 使用公共模板生成页面 152
5.2.2 组织视图 155
5.2.3 装饰器 160
5.2.4 参数 162
5.3 自定义标签 162
5.4 其他标签 165
5.4.1 〈ui:debug〉 165
5.4.2 〈ui:remove〉 167
5.4.3 处理空白 168
5.5 小结 168
第6章 数据表 169
6.1 数据表标签——h:dataTable 169
6.2 一个简单的表 170
6.2.1 h:dataTable特性 173
6.2.2 h:column特性 174
6.3 列头、列尾和标题 174
6.4 样式 177
6.4.1 列样式 178
6.4.2 行样式 179
6.5 表中的JSF组件 181
6.6 编辑表格 183
6.6.1 编辑表格单元格 184
6.6.2 删除行JSF 2.0 186
6.7 数据库表 189
6.8 表模型 193
6.8.1 呈现行号 193
6.8.2 查找所选行 194
6.8.3 排序和过滤 195
6.9 滚动技术 202
6.9.1 用滚动条滚动 202
6.9.2 用分页器小组件滚动 203
6.10 小结 203
第7章 转换和验证 205
7.1 转换和验证过程概述 205
7.2 使用标准转换器 206
7.2.1 数字和日期的转换 206
7.2.2 转换错误 210
7.2.3 一个完整的转换器例子 215
7.3 使用标准验证器 218
7.3.1 验证字符串长度和值范围 218
7.3.2 检查必需值 219
7.3.3 显示验证错误 220
7.3.4 跳过验证 222
7.3.5 一个完整的验证例子 222
7.4 bean验证JSF 2.0 225
7.5 使用自定义转换器和验证器编程 230
7.5.1 实现自定义转换器类 230
7.5.2 指定转换器JSF 2.0 233
7.5.3 报告转换错误 234
7.5.4 从资源包中获取错误消息 235
7.5.5 自定义转换器示例程序 239
7.5.6 为转换器提供特性 242
7.5.7 实现自定义验证器类 243
7.5.8 注册自定义验证器 243
7.5.9 使用bean方法验证 247
7.5.10 验证多个组件之间的关系 247
7.6 实现自定义转换器和验证器标签 249
7.7 小结 255
第8章 事件处理 257
8.1 事件和JSF生命周期 258
8.2 值更改事件 259
8.3 动作事件 263
8.4 事件监听器标签 269
8.5 直接组件 270
8.5.1 使用直接输入组件 271
8.5.2 使用直接命令组件 272
8.6 从UI向服务器传递数据 273
8.6.1 方法表达式参数JSF 2.0 274
8.6.2 f:param标签 275
8.6.3 f:attribute标签 275
8.6.4 f:setPropertyActionListener标签 276
8.7 阶段事件 277
8.8 系统事件JSF 2.0 278
8.8.1 多组件验证 280
8.8.2 在呈现视图之前做出决定 281
8.9 合为一体 285
8.10 小结 291
第9章 复合组件 293
9.1 复合标签库 294
9.2 使用复合组件 295
9.3 实现复合组件 297
9.4 配置复合组件 298
9.5 特性类型 299
9.6 必需的特性和默认特性值 299
9.7 处理服务器端数据 301
9.8 复合组件的本地化 303
9.9 公开复合组件 304
9.10 facet 308
9.11 子组件 309
9.12 JavaScript 310
9.13 支持组件 315
9.14 在JAR中打包复合组件 323
9.15 小结 323
第10章 Ajax JSF 2.0 325
10.1 Ajax和JSF 326
10.2 JSF生命周期和Aiax 327
10.3 JSF Aiax方法 328
10.4 F:ajax标签 329
10.5 Ajax组 331
10.6 Ajax字段验证 333
10.7 Ajax请求监视 334
10.8 JavaScript名称空间 336
10.9 处理Ajax错误 338
10.10 Ajax响应 338
10.11 JSF 2.0 JavaScript库 341
10.12 传递额外的Ajax请求参数 342
10.13 事件队列 344
10.14 合并事件 344
10.15 截获jsf.ajax.request() 345
10.16 在复合组件中使用Ajax 346
10.17 小结 351
第11章 自定义组件 353
11.1 实现组件类 354
11.2 编码:生成标记 357
11.3 解码:处理请求值 359
11.4 标签库描述符JSF 2.0 365
11.5 使用外部呈现器 368
11.6 处理标签特性JSF 2.0 371
11.6.1 支持值更改监听器 372
11.6.2 支持方法表达式 373
11.6.3 事件队列 374
11.6.4 示例应用程序 375
11.7 JavaScript编码 382
11.8 使用子组件和facet 385
11.8.1 处理SelectItem子组件 388
11.8.2 处理facet 389
11.8.3 使用隐藏字段 390
11.9 保存和还原状态 396
11.10 构建Ajax组件JSF 2.0 400
11.11 在自定义组件中实现独立的Ajax 401
11.12 小结 410
第12章 外部服务 411
12.1 使用JDBC访问数据库 411
12.1.1 发出SQL语句 411
12.1.2 连接管理 413
12.1.3 消除连接泄漏问题 413
12.1.4 使用预定义语句 415
12.1.5 事务 416
12.1.6 使用Derby数据库 417
12.2 配置数据源 418
12.2.1 访问容器管理的资源 418
12.2.2 在GlassFish中配置数据库资源 419
12.2.3 在Tomcat中配置数据库资源 421
12.2.4 一个完整的数据库例子 422
12.3 使用Java持久性架构 429
12.3.1 JPA简介 429
12.3.2 在Web应用程序中使用JPA 430
12.3.3 使用受管bean和无状态会话bean 434
12.3.4 有状态会话bean CDI 437
12.4 容器管理的身份验证和授权 440
12.5 发送邮件 450
12.6 使用Web服务 456
12.7 小结 462
第13章 问答 463
13.1 如何找到更多组件 463
13.2 如何支持文件上传 464
13.3 如何显示图像映射 471
13.4 如何在JSF页面中生成二进制数据 473
13.5 如何以一次一个页面的方式显示大型数据集 482
13.6 如何生成一个弹出窗口 487
13.7 如何酌情显示和隐藏页面部分 494
13.8 如何自定义错误页面 495
13.9 如何编写自己的客户端验证标签 500
13.10 如何配置应用程序 506
13.11 如何扩展JSF表达式语言 507
13.12 如何在JSF表达式语言中添加函数JSF 2.0 510
13.13 如何监视浏览器和服务器之间的流量 511
13.14 如何调试问题页面 513
13.15 当开发JSF应用程序时如何使用测试工具 514
13.16 如何结合使用JSF和Scala 515
13.17 如何结合使用JSF和Groovy 516
13.18 小结 517