书籍详情
JavaServer Faces完全参考手册
作者:(美)Chiris Schalk Ed Burns
出版社:人民邮电出版社
出版时间:2007-06-01
ISBN:9787115160188
定价:¥99.00
购买这本书可以去
内容简介
JavaServer Faces是构建Web应用程序用户界面的标准Java框架,其优势在于简化了用户界面的开发,而用户界面开发通常是Web应用程序开发中较为困难和烦琐的部分。本书全面介绍了与JavaServer Faces相关的完整技术集和编程方法,并介绍了应用程序安全、自动测试、调试,常见Java IDE,AJAX、表达式语言、本地化和国际化、访问性、应用程序框架,以及视图与业务逻辑的分离等相关内容。另外书中还提供了大量的组件、元素和标签参考内容。 .本书内容翔实,通过概念和简单示例结合的统一方式提供了JavaServer Faces的相关基础知识,同时用一个虚拟教练应用程序示例贯穿本书后面的部分,随着内容的深入逐步提供更多高级的信息。本书适合于具有各级经验的广大读者阅读,包括具有中级Web开发经验的开发人员和高级企业Java架构师。 使用JavaServer Faces(JSF)和这本一站式的指南,可实现功能丰富并且跨浏览器的Internet应用程序。编写本书的专家直接参与了这项重要技术的开发,书中全面介绍了JSF的所有方面。本书首先简要介绍了相关内容,这样就可迅速获得并运行首个JSF应用程序。然后深入介绍JSF的每个方面,包括请求处理生命周期、页面导航、组件开发、AJAX、验证、国际化和安全。..本书包括:■全面介绍了JSF的生命周期、托管bean、表达式语言(EL)、Faces事件、用户界面组件和导航模型;■使用转换器和验证器转换并处理来自完全不同源的数据的技巧;■完整集成的示例应用程序,可用作您自己JSF应用程序的模型,同时在线提供了代码;■有关如何使用Hibernate将JSF集成到产品质量数据库中的说明;■详细介绍如何构建支持AJAX的定制用户界面组件,并提供大量示例;■说明如何扩展Faces,即构建从验证器和转换器到NavigationHandler和ViewHandler的定制非用户界面组件;■对JSF应用程序进行调试以及开发自动软件测试的技巧;■大量介绍第三方Faces技术,包括MyFaces、ADFFaces、Facelets、Shale和支持Faces的IDE;■详细介绍使用JSF实现安全性(使用JAAS)、可访问性、国际化和本地化。...
作者简介
本书提供作译者介绍Chris Schalk是Oracle的应用程序服务器和开发工具部门的首席产品经理和热心的JSF传播者。他维护了一个有关JSF和J2EE Web开发的流行博客,地址是http://jroller.com/page/cschalk。.Ed Burns是Sun Microsystems, Inc.的高级工程师,从一开始就领导了JavaServer Faces技术的开发工作。他目前与他人一同领导了一个由来自各界专家组成的团队,致力于继续开发JSF。Ed的主页和博客位于http://purl.oclc.org/NET/edburns。James Holmes是Java Web开发的权威人士。他是Struts项目的委员,...
目录
第1章 JavaServer Faces简介...... 3
1.1 JavaServer Faces是什么...... 3
1.2 JavaServer Faces的历史...... 4
1.2.1 公共网关接口...... 4
1.2.2 Servlet API.. 4
1.2.3 Java服务器页面...... 5
1.2.4 Jakarta Struts.. 6
1.2.5 JavaServer Faces的诞生...... 6
1.3 JavaServer Faces设计目标...... 7
1.4 JSF——“企业”开发人员和“系统”开发人员共同的框架...... 8
1.5 JSF应用程序架构...... 9
1.5.1 JSF请求处理生命周期...... 11
1.5.2 JSF导航模型...... 12
第2章 构建一个简单的JavaServer Faces应用程序...... 14
2.1 应用程序概述...... 14
2.1.1 JSFReg应用程序文件...... 15
2.1.2 装配JSFReg应用程序...... 16
2.1.3 配置文件...... 17
2.1.4 JSP页面...... 18
2.2 设置JSF开发环境...... 30
2.2.1 下载JSF参考实现和必需的库...... 30
2.2.2 安装Tomcat或符合J2EE规范的应用程序服务器...... 30
2.3 编译、打包和运行应用程序...... 31
2.3.1 编译应用程序...... 31
2.3.2 打包应用程序...... 32
2.3.3 部署和运行应用程序...... 32
2.4 应用程序关键部分回顾...... 33
第3章 JavaServer Faces请求处理生命周期...... 34
3.1 JSF请求处理生命周期的高度概述...... 34
3.1.1 请求处理生命周期到底做什么...... 35
3.1.2 请求处理生命周期与其他Web技术的区别...... 35
3.1.3 自动服务器端视图管理和同步...... 35
3.1.4 请求处理生命周期阶段是什么...... 36
3.2 实际观察请求处理生命周期...... 42
3.3 与请求处理生命周期有关的高级主题...... 45
3.3.1 使用immediate属性...... 46
3.3.2 立即处理验证和转换...... 47
3.3.3 阶段侦听器...... 47
3.4 需要记住的生命周期概念...... 47
第4章 托管bean和JSF表达式语言...... 49
4.1 托管bean是什么...... 49
4.1.1 简单托管bean示例...... 50
4.1.2 初始化托管bean属性...... 51
4.1.3 直接把List和Map声明为托管bean... 56
4.1.4 托管bean的相互依赖...... 57
4.1.5 用EL设置托管属性...... 58
4.2 控制托管bean寿命...... 59
4.3 JSF表达式语言...... 60
4.3.1 JSF 1.1和JSF 1.2之间表达式语言的重要变化...... 60
4.3.2 统一EL概念...... 62
4.3.3 值表达式...... 62
4.3.4 表达式操作符...... 64
4.3.5 方法表达式...... 65
4.4 托管bean的Web应用程序开发细节...... 67
4.4.1 如何用编程方式访问托管bean... 67
4.4.2 用托管bean作为JSF页面的支撑bean... 69
第5章 导航模型...... 73
5.1 导航模型概述...... 74
5.1.1 回顾MVC——控制器...... 74
5.1.2 NavigationHandler——幕后主管...... 75
5.1.3 Faces动作方法说明...... 76
5.2 构建导航规则...... 77
5.2.1 静态导航示例...... 78
5.2.2 动态导航示例...... 79
5.3 更复杂的导航示例...... 83
5.3.1 使用通配符...... 83
5.3.2 使用重定向...... 84
5.3.3 把导航规则放在faces-config.xml之外...... 84
第6章 用户界面组件模型...... 86
6.1 用户界面组件是什么...... 86
6.1.1 基于组件的Web开发的兴起...... 87
6.1.2 JavaServer Faces用户界面组件的目标...... 88
6.2 JSF用户界面组件架构介绍...... 90
6.2.1 用户界面组件树(视图)...... 92
6.2.2 用户界面组件和相关的“活动部分”.. 94
6.3 用户界面组件和JSP... 95
6.3.1 用编程方式访问用户界面组件...... 95
6.3.2 在JSP中绑定用户界面组件的有用建议...... 98
第7章 数据转换与数据验证...... 101
7.1 验证和转换的一些示例...... 102
7.2 转换和验证揭秘...... 104
7.3 Faces转换器系统...... 107
7.3.1 DateTimeConverter.. 108
7.3.2 NumberConverter.. 109
7.3.3 把转换器与UIComponent实例关联...... 109
7.3.4 转换器的生命期...... 115
7.3.5 定制转换器...... 115
7.4 Faces验证系统...... 120
7.4.1 LongRangeValidator.. 121
7.4.2 DoubleRangeValidator.. 121
7.4.3 LengthValidator.. 122
7.4.4 “required”工具...... 122
7.4.5 如何把验证器与UIComponent实例关联...... 122
7.4.6 使用JSP把验证器与UIComponent实例关联...... 123
7.4.7 用JSP和验证器属性把验证器与UIComponent 实例关联...... 123
7.4.8 用编程方式把验证器与UIComponent实例关联...... 124
7.4.9 定制验证器...... 125
7.5 汇总:视图上的消息...... 127
7.5.1 FacesContext上与FacesMessage相关的方法...... 127
7.5.2 UIViewRoot及其Locale属性...... 129
7.5.3 何时、如何创建FacesMessage实例,并把它添加到FacesContext. 129
7.5.4 Faces消息的渲染...... 130
第8章 JSF事件模型...... 134
8.1 JSF事件模型高度概述...... 134
8.2 JSF事件的工作方式...... 135
8.2.1 Faces事件侦听器接口和事件类...... 136
8.2.2 何时处理Faces事件...... 136
8.2.3 动作事件解剖...... 138
8.2.4 在Faces生命周期中提前处理动作事件...... 139
8.2.5 值修改事件解剖...... 140
8.3 编写定制动作和值修改侦听器...... 141
8.4 两个Faces事件示例...... 143
8.4.1 使用值修改事件自动填充字段...... 144
8.4.2 扩展值修改示例...... 148
8.5 使用阶段事件和侦听器...... 150
8.6 创建定制事件和侦听器...... 153
第2部分 扩展JavaServer Faces
第9章 应用JSF:虚拟教练应用程序介绍...... 157
9.1 虚拟教练应用程序概观...... 157
9.1.1 注册和登录到虚拟教练应用程序...... 158
9.1.2 创建新训练事件的练习计划...... 159
9.1.3 选择和更新训练事件...... 161
9.1.4 以在线教练身份登录并更新事件练习评价...... 161
9.2 虚拟教练应用程序的需求...... 162
9.3 虚拟教练应用程序架构...... 163
9.4 构建虚拟教练应用程序...... 166
9.4.1 基本页面布局和格式化...... 166
9.4.2 创建简单的身份验证系统...... 168
9.4.3 退出虚拟教练应用程序...... 173
9.4.4 回顾JSFReg——构建注册系统...... 173
9.4.5 构建虚拟教练应用程序的浏览和编辑页面...... 178
9.4.6 在dataTable上使用定制滚动器组件...... 183
9.4.7 在dataTable中选择和编辑单行...... 185
9.4.8 向下钻取编辑表单...... 186
9.4.9 删除训练事件...... 191
9.4.10 创建新训练事件...... 193
9.5 实现可排序列...... 198
9.5.1 在Faces中实现数据层排序...... 199
9.5.2 在Faces中实现Web层排序...... 201
9.6 下一步——持久化虚拟教练数据...... 204
9.7 国际化虚拟教练应用程序...... 214
第10章 构建定制用户界面组件...... 217
10.1 何时构建定制用户界面组件...... 217
10.2 用户界面组件...... 218
10.3 用户界面组件的动态部分...... 218
10.4 简单的Hello World示例...... 219
10.4.1 构建HtmlHelloWorld示例...... 220
10.4.2 接受表单输入的HelloWorld用户界面组件...... 227
10.5 JSF股票报价组件...... 230
10.6 带有多个渲染器的InputDate组件...... 232
10.6.1 使用InputDate组件...... 233
10.6.2 InputDate组件背后的代码...... 233
10.6.3 HtmlInputDateRenderer.. 234
10.6.4 InputDate的WML变体...... 242
10.7 在运行时动态修改渲染器...... 245
10.8 定制图表组件...... 247
10.8.1 准备图表数据对象...... 248
10.8.2 使用图表数据对象...... 248
10.8.3 渲染SVG条形图表...... 249
10.9 在定制JSF组件中使用JavaScript——滚动条示例...... 254
10.9.1 使用高级JavaScript的挑战...... 254
10.9.2 使用JSF滚动条组件...... 259
10.9.3 添加必需的JavaScript库...... 260
10.10 高级定制JSF组件开发...... 261
10.10.1 把HtmlHelloInput用户界面组件升级成使用方法绑定...... 261
10.10.2 把HtmlHelloWorld和HtmlHelloInputMB组件升级到JSF 1.2... 264
10.10.3 把JSF 1.2 HtmlHelloWorldMB组件修改成使用方法表达式...... 266
10.11 把JSF组件打包成自包含的JAR.... 269
10.11.1 配置文件...... 269
10.11.2 组件类...... 270
10.11.3 相关资源...... 270
10.12 JSF组件包示例:components.jar.. 270
10.12.1 配置文件...... 271
10.12.2 组件类...... 276
10.12.3 相关资源...... 276
10.13 JSF组件元数据的未来...... 277
第11章 构建AJAX JSF组件...... 278
11.1 AJAX简介...... 278
11.1.1 为什么大家都对AJAX感兴趣...... 279
11.1.2 为什么JSF和AJAX是天作之合...... 279
11.2 AJAX揭秘...... 279
11.2.1 如何发出XML HTTP请求...... 280
11.2.2 把XMLHttpRequest用于HTML... 282
11.3 DirectorySearch——没有JSF的第一个AJAX示例...... 283
11.3.1 纯AJAX版DirectorySearch的架构...... 283
11.3.2 纯AJAX版DirectorySearch的问题...... 288
11.4 构建支持AJAX的JSF组件...... 288
11.4.1 在JSF中的AJAX系统高级元素...... 288
11.4.2 AJAX DirectorySearch JSF组件...... 290
11.4.3 AJAX SpellCheck JSF组件...... 295
11.5 AJAX技巧...... 310
11.6 AJAX XMLHttpRequest参考...... 311
第12章 构建非用户界面定制组件...... 312
12.1 JSF中的非用户界面定制组件和装饰...... 312
12.2 非视图定制组件释义...... 315
12.2.1 PhaseListener.. 315
12.2.2 转换器和验证器...... 316
12.2.3 ViewHandler.. 317
12.2.4 VariableResolver和PropertyResolver.. 318
12.2.5 ELResolver(JSF 1.2)...... 321
12.2.6 NavigationHandler.. 330
12.2.7 ActionListener.. 331
12.2.8 StateManager.. 332
12.2.9 RenderKit. 334
12.2.10 JSF中的工厂...... 343
第13章 其他视图描述技术和Facelets.. 351
13.1 替代视图描述技术的动机...... 351
13.2 ViewHandler与JSF系统其余部分的关系...... 352
13.2.1 ViewHandler、RenderKit与视图构造行为之间的关系...... 353
13.2.2 ViewHandler与状态管理系统的关系...... 353
13.3 如何构建和安装定制ViewHandler.. 354
13.3.1 为定制ViewHandler使用装饰...... 355
13.3.2 编写定制ViewHandler的一般考虑...... 358
13.4 Facelets视图描述技术...... 359
13.4.1 Faces模板的威力...... 359
13.4.2 JSP与Facelets之间的相似点和区别...... 360
13.4.3 Facelets中的Taglib... 361
13.4.4 实现Facelets Taglib... 362
13.4.5 使用Facelets taglib... 364
13.4.6 用Facelets进行模板化...... 365
13.4.7 Facelets模板标签指南...... 368
13.4.8 Facelets非模板标签指南...... 371
13.5 Facelets的设计、架构和实现...... 372
第3部分 应用JavaServer Faces
第14章 JavaServer Faces的本地化与访问性...... 379
14.1 本地化...... 379
14.1.1 JavaServer Faces本地化工具提供的益处...... 379
14.1.2 JSF本地化示例...... 381
14.1.3 Faces本地化和国际化背后的细节...... 385
14.1.4 定制组件的国际化问题...... 389
14.2 访问性...... 390
14.2.1 访问性为什么这么重要...... 391
14.2.2 JSF应用程序提供访问性的准则...... 391
14.2.3 给非文本内容提供一个文本等价物...... 392
14.2.4 正确使用标记和样式表...... 392
14.2.5 说明使用了哪个自然语言...... 392
14.2.6 使页面特性新技术能平滑地转换...... 393
14.2.7 确保用户能控制时间敏感内容的变化...... 393
14.2.8 设备独立性的设计...... 393
14.2.9 使用标签元素...... 393
14.2.10 上下文和方向信息...... 394
第15章 JavaServer Faces应用程序的安全性...... 395
15.1 Web应用程序安全性涉及的方面和实现...... 395
15.2 容器管理的安全性...... 396
15.2.1 容器管理的身份验证...... 396
15.2.2 基本身份验证和“领域”概念...... 397
15.2.3 基于表单的身份验证...... 398
15.2.4 证书身份验证...... 402
15.2.5 容器管理的授权和角色概念...... 404
15.2.6 容器管理的数据安全性...... 405
15.2.7 对虚拟教练安全性的小改善...... 406
15.3 用JavaServer Faces实现应用程序管理的安全性...... 407
15.3.1 回顾虚拟教练应用程序...... 407
15.3.2 Servlet过滤器和授权...... 408
15.3.3 PhaseListener和授权...... 413
15.4 实现“Remember Me”特性...... 415
15.4.1 RememberMeLoginComponent:生命周期和状态管理...... 416
15.4.2 RememberMeLoginComponent:渲染行为...... 420
15.4.3 RememberMeLoginComponent:属性...... 424
15.4.4 RememberMeLoginTag... 425
15.4.5 RememberMePhaseListener.. 427
15.5 在JSF应用程序中利用JAAS... 429
15.6 学习更多关于安全性的知识...... 438
第16章 JavaServer Faces应用程序的自动测试和调试...... 439
16.1 软件测试术语回顾...... 439
16.1.1 单元测试...... 441
16.1.2 集成测试...... 441
16.1.3 系统测试...... 441
16.1.4 压力测试...... 441
16.1.5 测试驱动的开发...... 442
16.2 Web应用程序的自动测试工具...... 442
16.2.1 JUnit:Java平台最流行的自动测试技术...... 443
16.2.2 Cactus:服务器端的自动单元测试...... 447
16.2.3 HTMLUnit:测试虚拟教练应用程序的流程...... 449
16.2.4 JSF应用程序的加载测试和分析...... 451
16.3 调试JSF应用程序...... 459
16.3.1 不用源代码级调试器调试JSF应用程序...... 459
16.3.2 用java.util.logging 工具记录日志...... 459
16.3.3 用Jakarta Commons Logging工具记录日志...... 461
16.3.4 其他JSF应用程序非调试器调试技术...... 464
16.3.5 用Eclipse进行源代码级调试...... 465
16.3.6 用NetBeans进行源代码级调试...... 467
16.3.7 用Oracle JDeveloper调试JSF JSP... 469
第4部分 JavaServer Faces工具及库
第17章 使用可视化开发环境开发JSF应用程序...... 475
17.1 应用程序...... 476
17.2 Sun Java Studio Creator.. 476
17.2.1 熟悉Java Studio Creator.. 477
17.2.2 在Studio Creator中构建简化版虚拟教练应用程序...... 479
17.3 BEA Workshop Studio... 483
17.3.1 熟悉BEA Workshop Studio... 483
17.3.2 构建简化版JSF教练应用程序...... 484
17.4 Oracle JDeveloper 10g... 486
17.4.1 熟悉JDeveloper.. 487
17.4.2 使用Oracle的ADF框架...... 495
17.5 IBM Rational Web Developer.. 499
17.5.1 熟悉IBM Rational Web Developer.. 500
17.5.2 构建简化版JSF教练应用程序...... 501
17.6 Exadel Studio Pro... 506
17.6.1 熟悉Exadel Studio Pro... 506
17.6.2 创建简化版JSF教练应用程序...... 507
第18章 JavaServer Faces配置文件...... 513
18.1 理解XML DTD.... 514
18.2 理解XML方案...... 515
18.3 理解配置文件的处理过程...... 515
18.4 Faces配置元素...... 516
18.4.1 Action-listener元素...... 521
18.4.2 Application元素...... 522
18.4.3 Application-factory元素...... 522
18.4.4 Attribute元
素...............................................................................................
................................................................................. 523
18.4.5 Attribute-class元素...... 525
18.4.6 Attribute-name元素...... 526
18.4.7 Base-name元素...... 527
18.4.8 Component元素...... 528
18.4.9 Component-class元素...... 529
18.4.10 Component-family元素...... 529
18.4.11 Component-type元素...... 530
18.4.12 Converter元素...... 531
18.4.13 Converter-class元素...... 532
18.4.14 Converter-for-class元素...... 532
18.4.15 Converter-id元素...... 533
18.4.16 Default-locale元素...... 534
18.4.17 Default-render-kit-id元素...... 535
18.4.18 Default-value元素...... 536
18.4.19 El-resolver元素...... 537
18.4.20 Faces-config元素...... 538
18.4.21 Faces-context-factory元素...... 539
18.4.22 Facet元素...... 539
18.4.23 Facet-name元素...... 541
18.4.24 Factory元素...... 541
18.4.25 From-action元素...... 542
18.4.26 From-outcome元素...... 543
18.4.27 From-view-id元素...... 544
18.4.28 Key元素...... 544
18.4.29 Key-class元素...... 545
18.4.30 Lifecycle元素...... 547
18.4.31 Lifecycle-factory元素...... 547
18.4.32 List-entries元素...... 548
18.4.33 Locale-config元素...... 549
18.4.34 Managed-bean元素...... 550
18.4.35 Managed-bean-class元素...... 551
18.4.36 Managed-bean-name元素...... 552
18.4.37 Managed-bean-scope元素...... 553
18.4.38 Managed-property元素...... 554
18.4.39 Map-entries元素...... 555
18.4.40 Map-entry元素...... 556
18.4.41 Message-bundle元素...... 557
18.4.42 Navigation-case元素...... 558
18.4.43 Navigation-handler元素...... 559
18.4.44 Navigation-rule元素...... 560
18.4.45 Null-value元素...... 560
18.4.46 Phase-listener元素...... 563
18.4.47 Property元素...... 563
18.4.48 Property-class元素...... 565
18.4.49 Property-name元素...... 566
18.4.50 Property-resolver元素...... 567
18.4.51 Redirect元素...... 567
18.4.52 Referenced-bean元素...... 568
18.4.53 Referenced-bean-class元素...... 569
18.4.54 Referenced-bean-name元素...... 570
18.4.55 Render-kit元素...... 570
18.4.56 Render-kit-class元素...... 571
18.4.57 Render-kit-factory元素...... 572
18.4.58 Render-kit-id元素...... 573
18.4.59 Renderer元素...... 574
18.4.60 Renderer-class元素...... 575
18.4.61 Renderer-type元素...... 576
18.4.62 Resource-bundle元素...... 576
18.4.63 State-manager元素...... 577
18.4.64 Suggested-value元素...... 578
18.4.65 Supported-locale元素...... 579
18.4.66 To-view-id元素...... 580
18.4.67 Validator元素...... 581
18.4.68 Validator-class元素...... 582
18.4.69 Validator-id元素...... 582
18.4.70 Value元素...... 583
18.4.71 Value-class元素...... 585
18.4.72 Var元素...... 587
18.4.73 Variable-resolver元素...... 588
18.4.74 View-handler元素...... 588
18.5 扩展元素...... 589
18.6 元数据元素...... 590
18.7 使用Faces Console编辑配置文件...... 591
第19章 标准JSF组件库...... 593
19.1 JSF和JSP标签术语概览...... 593
19.2 获取并安装标准库...... 594
19.2.1 得到的内容(二进制)...... 594
19.2.2 得到的内容(源代码)...... 594
19.3 核心和HTML组件库参考...... 594
19.3.1 标准核心库...... 594
19.3.2 actionListener标签...... 596
19.3.3 attribute标签...... 596
19.3.4 convertDateTime标签...... 597
19.3.5 convertNumber标签...... 598
19.3.6 converter标签...... 599
19.3.7 facet标签...... 600
19.3.8 loadBundle标签...... 600
19.3.9 param组件...... 601
19.3.10 phaseListener标签(仅限1.2)...... 602
19.3.11 selectItem组件...... 603
19.3.12 selectItems标签...... 603
19.3.13 setPropertyActionListener标签(仅限1.2)...... 604
19.3.14 subview组件...... 605
19.3.15 validateDoubleRange标签...... 607
19.3.16 validateLength标签...... 607
19.3.17 validateLongRange标签...... 608
19.3.18 Validator标签...... 609
19.3.19 valueChangeListener标签...... 610
19.3.20 verbatim组件...... 611
19.3.21 view组件...... 611
19.4 标准HTML库...... 612
19.4.1 column组件...... 614
19.4.2 commandButton组件...... 615
19.4.3 commandLink组件...... 617
19.4.4 dataTable组件...... 619
19.4.5 form组件...... 622
19.4.6 graphicImage组件...... 623
19.4.7 inputHidden组件...... 625
19.4.8 inputSecret组件...... 626
19.4.9 inputText组件...... 628
19.4.10 inputTextarea组件...... 629
19.4.11 message组件...... 631
19.4.12 messages组件...... 632
19.4.13 outputFormat组件...... 634
19.4.14 outputLabel组件...... 635
19.4.15 outputLink组件...... 636
19.4.16 outputText组件...... 638
19.4.17 panelGrid组件...... 639
19.4.18 panelGroup组件...... 640
19.4.19 selectBooleanCheckbox组件...... 641
19.4.20 selectManyCheckbox组件...... 643
19.4.21 selectManyListbox组件...... 645
19.4.22 selectManyMenu组件...... 647
19.4.23 selectOneListbox组件...... 649
19.4.24 selectOneMenu组件...... 651
19.4.25 selectOneRadio组件...... 653
第20章 MyFaces实现和组件库...... 656
20.1 得到MyFaces.. 656
20.1.1 从二进制发行包中得到什么...... 657
20.1.2 从源代码发行包中得到什么...... 657
20.2 使用MyFaces.. 657
20.2.1 使用MyFaces JSF实现...... 658
20.2.2 使用MyFaces Tomahawk库...... 658
20.3 MyFaces扩展组件...... 660
20.3.1 公共扩展属性...... 661
20.3.2 commandButton组件...... 661
20.3.3 commandLink组件...... 662
20.3.4 dataTable组件...... 662
20.3.5 graphicImage组件...... 663
20.3.6 inputHidden组件...... 664
20.3.7 inputSecret组件...... 664
20.3.8 inputText组件...... 665
20.3.9 inputTextarea组件...... 665
20.3.10 message组件...... 665
20.3.11 messages组件...... 666
20.3.12 outputLabel组件...... 667
20.3.13 outputText组件...... 667
20.3.14 panelGrid组件...... 668
20.3.15 panelGroup组件...... 668
20.3.16 selectBooleanCheckbox组件...... 669
20.3.17 selectManyCheckbox组件...... 669
20.3.18 selectManyListbox组件...... 669
20.3.19 selectManyMenu组件...... 670
20.3.20 selectOneListbox组件...... 670
20.3.21 selectOneMenu组件...... 671
20.3.22 selectOneRadio组件...... 671
20.4 MyFaces定制组件...... 672
20.4.1 公共属性...... 674
20.4.2 aliasBean组件...... 675
20.4.3 aliasBeansScope组件...... 675
20.4.4 buffer组件...... 676
20.4.5 checkbox组件...... 676
20.4.6 collapsiblePanel组件...... 677
20.4.7 commandNavigation组件...... 678
20.4.8 commandNavigation2组件...... 679
20.4.9 commandSortHeader组件...... 681
20.4.10 dataList组件...... 682
20.4.11 dataScroller组件...... 683
20.4.12 div组件...... 685
20.4.13 htmlTag组件...... 686
20.4.14 inputCalendar组件...... 687
20.4.15 inputDate组件...... 689
20.4.16 inputFileUpload组件...... 690
20.4.17 inputHTML组件...... 692
20.4.18 inputTextHelp组件...... 694
20.4.19 jscookMenu组件...... 695
20.4.20 jsValueChangeListener组件...... 696
20.4.21 jsValueSet组件...... 697
20.4.22 newspaperTable组件...... 697
20.4.23 panelNavigation组件...... 699
20.4.24 panelNavigation2组件...... 700
20.4.25 panelStack组件...... 701
20.4.26 panelTab组件...... 702
20.4.27 panelTabbedPane组件...... 703
20.4.28 popup组件...... 704
20.4.29 radio组件...... 705
20.4.30 saveState组件...... 706
20.4.31 selectOneCountry组件...... 706
20.4.32 selectOneLanguage组件...... 707
20.4.33 stylesheet组件...... 709
20.4.34 tree组件...... 709
20.4.35 tree2组件...... 710
20.4.36 treeColumn组件...... 712
20.4.37 updateActionListener标签...... 713
20.5 MyFaces定制验证器...... 714
20.5.1 validateCreditCard验证器...... 714
20.5.2 validateEmail验证器...... 715
20.5.3 validateEqual验证器...... 716
20.5.4 validateRegExpr验证器...... 717
20.6 MyFaces对Tiles框架的支持...... 718
20.6.1 Tiles概述...... 718
20.6.2 使用MyFaces对Tiles的支持...... 719
第5部分 附 录
附录A Faces Console快速参考...... 729
A.1 支持的配置文件...... 730
A.2 获得并安装Faces Console.. 731
A.3 使用Faces Console作为独立应用程序...... 731
A.4 在Borland JBuilder内使用Faces Console.. 732
A.5 在Eclipse内使用Faces Console.. 734
A.6 在IBM Rational Application Developer for WebSphere中使用Faces Console. 737
A.7 在IntelliJ IDEA内使用Faces Console.. 739
A.8 在NetBeans和Sun ONE Studio(Forte)内使用Faces Console.. 741
A.9 在Oracle JDeveloper内使用Faces Console.. 743
A.10 配置Faces Console输出选项...... 745
附录B 第三方JSF组件库...... 746
B.1 Sun的扩展用户界面组件库...... 746
B.2 JScape的WebGalileo Faces.. 746
B.3 Oracle的ADF Faces.. 747
B.3.1 获得ADF Faces.. 747
B.3.2 ADF Faces组件参考...... 747
B.4 ADF Faces关键技术...... 752
B.4.1 ADF Faces部分页面渲染特性...... 752
B.4.2 ADF Faces processScope.. 755
B.4.3 使用ADF Faces对话框框架...... 757
B.4.4 ADF Faces皮肤技术...... 760
B.4.5 Oracle JDeveloper针对ADF Faces的可视化设计时体验...... 764
B.5 JSFCentral——第三方组件参考中心...... 765
附录C 从Struts迁移到Faces.. 766
C.1 相似与不同...... 766
C.2 开发风格...... 768
C.3 迁移策略:Struts-Faces集成库...... 768
C.3.1 满足编译时和运行时依赖关系...... 769
C.3.2 声明FacesServlet. 769
C.3.3 映射FacesServlet. 769
C.3.4 替换标准Struts请求处理器...... 770
C.3.5 迁移JSP页面...... 770
C.3.6 修改动作转发...... 771
附录D JSF的未来:Apache Shale.. 773
D.1 Shale、Java社区进程和创新...... 773
D.2 迁移考虑:是否应当采用Shale.. 775
D.3 获得和运行Shale.. 775
D.3.1 对话框管理器...... 776
D.3.2 应用程序管理器...... 777
D.4 Shale特性指南...... 778
D.4.1 ViewController(shale-core.jar)...... 778
D.4.2 对话框管理器(shale-core.jar)...... 781
D.4.3 应用程序管理器(shale-core.jar)...... 785
D.4.4 验证(shale-core.jar)...... 786
D.4.5 远程(Remoting)(shale-remoting.jar)...... 789
D.4.6 访问静态资源...... 789
D.4.7 调用MethodExpression... 791
D.5 结束语和参考资源...... 793
1.1 JavaServer Faces是什么...... 3
1.2 JavaServer Faces的历史...... 4
1.2.1 公共网关接口...... 4
1.2.2 Servlet API.. 4
1.2.3 Java服务器页面...... 5
1.2.4 Jakarta Struts.. 6
1.2.5 JavaServer Faces的诞生...... 6
1.3 JavaServer Faces设计目标...... 7
1.4 JSF——“企业”开发人员和“系统”开发人员共同的框架...... 8
1.5 JSF应用程序架构...... 9
1.5.1 JSF请求处理生命周期...... 11
1.5.2 JSF导航模型...... 12
第2章 构建一个简单的JavaServer Faces应用程序...... 14
2.1 应用程序概述...... 14
2.1.1 JSFReg应用程序文件...... 15
2.1.2 装配JSFReg应用程序...... 16
2.1.3 配置文件...... 17
2.1.4 JSP页面...... 18
2.2 设置JSF开发环境...... 30
2.2.1 下载JSF参考实现和必需的库...... 30
2.2.2 安装Tomcat或符合J2EE规范的应用程序服务器...... 30
2.3 编译、打包和运行应用程序...... 31
2.3.1 编译应用程序...... 31
2.3.2 打包应用程序...... 32
2.3.3 部署和运行应用程序...... 32
2.4 应用程序关键部分回顾...... 33
第3章 JavaServer Faces请求处理生命周期...... 34
3.1 JSF请求处理生命周期的高度概述...... 34
3.1.1 请求处理生命周期到底做什么...... 35
3.1.2 请求处理生命周期与其他Web技术的区别...... 35
3.1.3 自动服务器端视图管理和同步...... 35
3.1.4 请求处理生命周期阶段是什么...... 36
3.2 实际观察请求处理生命周期...... 42
3.3 与请求处理生命周期有关的高级主题...... 45
3.3.1 使用immediate属性...... 46
3.3.2 立即处理验证和转换...... 47
3.3.3 阶段侦听器...... 47
3.4 需要记住的生命周期概念...... 47
第4章 托管bean和JSF表达式语言...... 49
4.1 托管bean是什么...... 49
4.1.1 简单托管bean示例...... 50
4.1.2 初始化托管bean属性...... 51
4.1.3 直接把List和Map声明为托管bean... 56
4.1.4 托管bean的相互依赖...... 57
4.1.5 用EL设置托管属性...... 58
4.2 控制托管bean寿命...... 59
4.3 JSF表达式语言...... 60
4.3.1 JSF 1.1和JSF 1.2之间表达式语言的重要变化...... 60
4.3.2 统一EL概念...... 62
4.3.3 值表达式...... 62
4.3.4 表达式操作符...... 64
4.3.5 方法表达式...... 65
4.4 托管bean的Web应用程序开发细节...... 67
4.4.1 如何用编程方式访问托管bean... 67
4.4.2 用托管bean作为JSF页面的支撑bean... 69
第5章 导航模型...... 73
5.1 导航模型概述...... 74
5.1.1 回顾MVC——控制器...... 74
5.1.2 NavigationHandler——幕后主管...... 75
5.1.3 Faces动作方法说明...... 76
5.2 构建导航规则...... 77
5.2.1 静态导航示例...... 78
5.2.2 动态导航示例...... 79
5.3 更复杂的导航示例...... 83
5.3.1 使用通配符...... 83
5.3.2 使用重定向...... 84
5.3.3 把导航规则放在faces-config.xml之外...... 84
第6章 用户界面组件模型...... 86
6.1 用户界面组件是什么...... 86
6.1.1 基于组件的Web开发的兴起...... 87
6.1.2 JavaServer Faces用户界面组件的目标...... 88
6.2 JSF用户界面组件架构介绍...... 90
6.2.1 用户界面组件树(视图)...... 92
6.2.2 用户界面组件和相关的“活动部分”.. 94
6.3 用户界面组件和JSP... 95
6.3.1 用编程方式访问用户界面组件...... 95
6.3.2 在JSP中绑定用户界面组件的有用建议...... 98
第7章 数据转换与数据验证...... 101
7.1 验证和转换的一些示例...... 102
7.2 转换和验证揭秘...... 104
7.3 Faces转换器系统...... 107
7.3.1 DateTimeConverter.. 108
7.3.2 NumberConverter.. 109
7.3.3 把转换器与UIComponent实例关联...... 109
7.3.4 转换器的生命期...... 115
7.3.5 定制转换器...... 115
7.4 Faces验证系统...... 120
7.4.1 LongRangeValidator.. 121
7.4.2 DoubleRangeValidator.. 121
7.4.3 LengthValidator.. 122
7.4.4 “required”工具...... 122
7.4.5 如何把验证器与UIComponent实例关联...... 122
7.4.6 使用JSP把验证器与UIComponent实例关联...... 123
7.4.7 用JSP和验证器属性把验证器与UIComponent 实例关联...... 123
7.4.8 用编程方式把验证器与UIComponent实例关联...... 124
7.4.9 定制验证器...... 125
7.5 汇总:视图上的消息...... 127
7.5.1 FacesContext上与FacesMessage相关的方法...... 127
7.5.2 UIViewRoot及其Locale属性...... 129
7.5.3 何时、如何创建FacesMessage实例,并把它添加到FacesContext. 129
7.5.4 Faces消息的渲染...... 130
第8章 JSF事件模型...... 134
8.1 JSF事件模型高度概述...... 134
8.2 JSF事件的工作方式...... 135
8.2.1 Faces事件侦听器接口和事件类...... 136
8.2.2 何时处理Faces事件...... 136
8.2.3 动作事件解剖...... 138
8.2.4 在Faces生命周期中提前处理动作事件...... 139
8.2.5 值修改事件解剖...... 140
8.3 编写定制动作和值修改侦听器...... 141
8.4 两个Faces事件示例...... 143
8.4.1 使用值修改事件自动填充字段...... 144
8.4.2 扩展值修改示例...... 148
8.5 使用阶段事件和侦听器...... 150
8.6 创建定制事件和侦听器...... 153
第2部分 扩展JavaServer Faces
第9章 应用JSF:虚拟教练应用程序介绍...... 157
9.1 虚拟教练应用程序概观...... 157
9.1.1 注册和登录到虚拟教练应用程序...... 158
9.1.2 创建新训练事件的练习计划...... 159
9.1.3 选择和更新训练事件...... 161
9.1.4 以在线教练身份登录并更新事件练习评价...... 161
9.2 虚拟教练应用程序的需求...... 162
9.3 虚拟教练应用程序架构...... 163
9.4 构建虚拟教练应用程序...... 166
9.4.1 基本页面布局和格式化...... 166
9.4.2 创建简单的身份验证系统...... 168
9.4.3 退出虚拟教练应用程序...... 173
9.4.4 回顾JSFReg——构建注册系统...... 173
9.4.5 构建虚拟教练应用程序的浏览和编辑页面...... 178
9.4.6 在dataTable上使用定制滚动器组件...... 183
9.4.7 在dataTable中选择和编辑单行...... 185
9.4.8 向下钻取编辑表单...... 186
9.4.9 删除训练事件...... 191
9.4.10 创建新训练事件...... 193
9.5 实现可排序列...... 198
9.5.1 在Faces中实现数据层排序...... 199
9.5.2 在Faces中实现Web层排序...... 201
9.6 下一步——持久化虚拟教练数据...... 204
9.7 国际化虚拟教练应用程序...... 214
第10章 构建定制用户界面组件...... 217
10.1 何时构建定制用户界面组件...... 217
10.2 用户界面组件...... 218
10.3 用户界面组件的动态部分...... 218
10.4 简单的Hello World示例...... 219
10.4.1 构建HtmlHelloWorld示例...... 220
10.4.2 接受表单输入的HelloWorld用户界面组件...... 227
10.5 JSF股票报价组件...... 230
10.6 带有多个渲染器的InputDate组件...... 232
10.6.1 使用InputDate组件...... 233
10.6.2 InputDate组件背后的代码...... 233
10.6.3 HtmlInputDateRenderer.. 234
10.6.4 InputDate的WML变体...... 242
10.7 在运行时动态修改渲染器...... 245
10.8 定制图表组件...... 247
10.8.1 准备图表数据对象...... 248
10.8.2 使用图表数据对象...... 248
10.8.3 渲染SVG条形图表...... 249
10.9 在定制JSF组件中使用JavaScript——滚动条示例...... 254
10.9.1 使用高级JavaScript的挑战...... 254
10.9.2 使用JSF滚动条组件...... 259
10.9.3 添加必需的JavaScript库...... 260
10.10 高级定制JSF组件开发...... 261
10.10.1 把HtmlHelloInput用户界面组件升级成使用方法绑定...... 261
10.10.2 把HtmlHelloWorld和HtmlHelloInputMB组件升级到JSF 1.2... 264
10.10.3 把JSF 1.2 HtmlHelloWorldMB组件修改成使用方法表达式...... 266
10.11 把JSF组件打包成自包含的JAR.... 269
10.11.1 配置文件...... 269
10.11.2 组件类...... 270
10.11.3 相关资源...... 270
10.12 JSF组件包示例:components.jar.. 270
10.12.1 配置文件...... 271
10.12.2 组件类...... 276
10.12.3 相关资源...... 276
10.13 JSF组件元数据的未来...... 277
第11章 构建AJAX JSF组件...... 278
11.1 AJAX简介...... 278
11.1.1 为什么大家都对AJAX感兴趣...... 279
11.1.2 为什么JSF和AJAX是天作之合...... 279
11.2 AJAX揭秘...... 279
11.2.1 如何发出XML HTTP请求...... 280
11.2.2 把XMLHttpRequest用于HTML... 282
11.3 DirectorySearch——没有JSF的第一个AJAX示例...... 283
11.3.1 纯AJAX版DirectorySearch的架构...... 283
11.3.2 纯AJAX版DirectorySearch的问题...... 288
11.4 构建支持AJAX的JSF组件...... 288
11.4.1 在JSF中的AJAX系统高级元素...... 288
11.4.2 AJAX DirectorySearch JSF组件...... 290
11.4.3 AJAX SpellCheck JSF组件...... 295
11.5 AJAX技巧...... 310
11.6 AJAX XMLHttpRequest参考...... 311
第12章 构建非用户界面定制组件...... 312
12.1 JSF中的非用户界面定制组件和装饰...... 312
12.2 非视图定制组件释义...... 315
12.2.1 PhaseListener.. 315
12.2.2 转换器和验证器...... 316
12.2.3 ViewHandler.. 317
12.2.4 VariableResolver和PropertyResolver.. 318
12.2.5 ELResolver(JSF 1.2)...... 321
12.2.6 NavigationHandler.. 330
12.2.7 ActionListener.. 331
12.2.8 StateManager.. 332
12.2.9 RenderKit. 334
12.2.10 JSF中的工厂...... 343
第13章 其他视图描述技术和Facelets.. 351
13.1 替代视图描述技术的动机...... 351
13.2 ViewHandler与JSF系统其余部分的关系...... 352
13.2.1 ViewHandler、RenderKit与视图构造行为之间的关系...... 353
13.2.2 ViewHandler与状态管理系统的关系...... 353
13.3 如何构建和安装定制ViewHandler.. 354
13.3.1 为定制ViewHandler使用装饰...... 355
13.3.2 编写定制ViewHandler的一般考虑...... 358
13.4 Facelets视图描述技术...... 359
13.4.1 Faces模板的威力...... 359
13.4.2 JSP与Facelets之间的相似点和区别...... 360
13.4.3 Facelets中的Taglib... 361
13.4.4 实现Facelets Taglib... 362
13.4.5 使用Facelets taglib... 364
13.4.6 用Facelets进行模板化...... 365
13.4.7 Facelets模板标签指南...... 368
13.4.8 Facelets非模板标签指南...... 371
13.5 Facelets的设计、架构和实现...... 372
第3部分 应用JavaServer Faces
第14章 JavaServer Faces的本地化与访问性...... 379
14.1 本地化...... 379
14.1.1 JavaServer Faces本地化工具提供的益处...... 379
14.1.2 JSF本地化示例...... 381
14.1.3 Faces本地化和国际化背后的细节...... 385
14.1.4 定制组件的国际化问题...... 389
14.2 访问性...... 390
14.2.1 访问性为什么这么重要...... 391
14.2.2 JSF应用程序提供访问性的准则...... 391
14.2.3 给非文本内容提供一个文本等价物...... 392
14.2.4 正确使用标记和样式表...... 392
14.2.5 说明使用了哪个自然语言...... 392
14.2.6 使页面特性新技术能平滑地转换...... 393
14.2.7 确保用户能控制时间敏感内容的变化...... 393
14.2.8 设备独立性的设计...... 393
14.2.9 使用标签元素...... 393
14.2.10 上下文和方向信息...... 394
第15章 JavaServer Faces应用程序的安全性...... 395
15.1 Web应用程序安全性涉及的方面和实现...... 395
15.2 容器管理的安全性...... 396
15.2.1 容器管理的身份验证...... 396
15.2.2 基本身份验证和“领域”概念...... 397
15.2.3 基于表单的身份验证...... 398
15.2.4 证书身份验证...... 402
15.2.5 容器管理的授权和角色概念...... 404
15.2.6 容器管理的数据安全性...... 405
15.2.7 对虚拟教练安全性的小改善...... 406
15.3 用JavaServer Faces实现应用程序管理的安全性...... 407
15.3.1 回顾虚拟教练应用程序...... 407
15.3.2 Servlet过滤器和授权...... 408
15.3.3 PhaseListener和授权...... 413
15.4 实现“Remember Me”特性...... 415
15.4.1 RememberMeLoginComponent:生命周期和状态管理...... 416
15.4.2 RememberMeLoginComponent:渲染行为...... 420
15.4.3 RememberMeLoginComponent:属性...... 424
15.4.4 RememberMeLoginTag... 425
15.4.5 RememberMePhaseListener.. 427
15.5 在JSF应用程序中利用JAAS... 429
15.6 学习更多关于安全性的知识...... 438
第16章 JavaServer Faces应用程序的自动测试和调试...... 439
16.1 软件测试术语回顾...... 439
16.1.1 单元测试...... 441
16.1.2 集成测试...... 441
16.1.3 系统测试...... 441
16.1.4 压力测试...... 441
16.1.5 测试驱动的开发...... 442
16.2 Web应用程序的自动测试工具...... 442
16.2.1 JUnit:Java平台最流行的自动测试技术...... 443
16.2.2 Cactus:服务器端的自动单元测试...... 447
16.2.3 HTMLUnit:测试虚拟教练应用程序的流程...... 449
16.2.4 JSF应用程序的加载测试和分析...... 451
16.3 调试JSF应用程序...... 459
16.3.1 不用源代码级调试器调试JSF应用程序...... 459
16.3.2 用java.util.logging 工具记录日志...... 459
16.3.3 用Jakarta Commons Logging工具记录日志...... 461
16.3.4 其他JSF应用程序非调试器调试技术...... 464
16.3.5 用Eclipse进行源代码级调试...... 465
16.3.6 用NetBeans进行源代码级调试...... 467
16.3.7 用Oracle JDeveloper调试JSF JSP... 469
第4部分 JavaServer Faces工具及库
第17章 使用可视化开发环境开发JSF应用程序...... 475
17.1 应用程序...... 476
17.2 Sun Java Studio Creator.. 476
17.2.1 熟悉Java Studio Creator.. 477
17.2.2 在Studio Creator中构建简化版虚拟教练应用程序...... 479
17.3 BEA Workshop Studio... 483
17.3.1 熟悉BEA Workshop Studio... 483
17.3.2 构建简化版JSF教练应用程序...... 484
17.4 Oracle JDeveloper 10g... 486
17.4.1 熟悉JDeveloper.. 487
17.4.2 使用Oracle的ADF框架...... 495
17.5 IBM Rational Web Developer.. 499
17.5.1 熟悉IBM Rational Web Developer.. 500
17.5.2 构建简化版JSF教练应用程序...... 501
17.6 Exadel Studio Pro... 506
17.6.1 熟悉Exadel Studio Pro... 506
17.6.2 创建简化版JSF教练应用程序...... 507
第18章 JavaServer Faces配置文件...... 513
18.1 理解XML DTD.... 514
18.2 理解XML方案...... 515
18.3 理解配置文件的处理过程...... 515
18.4 Faces配置元素...... 516
18.4.1 Action-listener元素...... 521
18.4.2 Application元素...... 522
18.4.3 Application-factory元素...... 522
18.4.4 Attribute元
素...............................................................................................
................................................................................. 523
18.4.5 Attribute-class元素...... 525
18.4.6 Attribute-name元素...... 526
18.4.7 Base-name元素...... 527
18.4.8 Component元素...... 528
18.4.9 Component-class元素...... 529
18.4.10 Component-family元素...... 529
18.4.11 Component-type元素...... 530
18.4.12 Converter元素...... 531
18.4.13 Converter-class元素...... 532
18.4.14 Converter-for-class元素...... 532
18.4.15 Converter-id元素...... 533
18.4.16 Default-locale元素...... 534
18.4.17 Default-render-kit-id元素...... 535
18.4.18 Default-value元素...... 536
18.4.19 El-resolver元素...... 537
18.4.20 Faces-config元素...... 538
18.4.21 Faces-context-factory元素...... 539
18.4.22 Facet元素...... 539
18.4.23 Facet-name元素...... 541
18.4.24 Factory元素...... 541
18.4.25 From-action元素...... 542
18.4.26 From-outcome元素...... 543
18.4.27 From-view-id元素...... 544
18.4.28 Key元素...... 544
18.4.29 Key-class元素...... 545
18.4.30 Lifecycle元素...... 547
18.4.31 Lifecycle-factory元素...... 547
18.4.32 List-entries元素...... 548
18.4.33 Locale-config元素...... 549
18.4.34 Managed-bean元素...... 550
18.4.35 Managed-bean-class元素...... 551
18.4.36 Managed-bean-name元素...... 552
18.4.37 Managed-bean-scope元素...... 553
18.4.38 Managed-property元素...... 554
18.4.39 Map-entries元素...... 555
18.4.40 Map-entry元素...... 556
18.4.41 Message-bundle元素...... 557
18.4.42 Navigation-case元素...... 558
18.4.43 Navigation-handler元素...... 559
18.4.44 Navigation-rule元素...... 560
18.4.45 Null-value元素...... 560
18.4.46 Phase-listener元素...... 563
18.4.47 Property元素...... 563
18.4.48 Property-class元素...... 565
18.4.49 Property-name元素...... 566
18.4.50 Property-resolver元素...... 567
18.4.51 Redirect元素...... 567
18.4.52 Referenced-bean元素...... 568
18.4.53 Referenced-bean-class元素...... 569
18.4.54 Referenced-bean-name元素...... 570
18.4.55 Render-kit元素...... 570
18.4.56 Render-kit-class元素...... 571
18.4.57 Render-kit-factory元素...... 572
18.4.58 Render-kit-id元素...... 573
18.4.59 Renderer元素...... 574
18.4.60 Renderer-class元素...... 575
18.4.61 Renderer-type元素...... 576
18.4.62 Resource-bundle元素...... 576
18.4.63 State-manager元素...... 577
18.4.64 Suggested-value元素...... 578
18.4.65 Supported-locale元素...... 579
18.4.66 To-view-id元素...... 580
18.4.67 Validator元素...... 581
18.4.68 Validator-class元素...... 582
18.4.69 Validator-id元素...... 582
18.4.70 Value元素...... 583
18.4.71 Value-class元素...... 585
18.4.72 Var元素...... 587
18.4.73 Variable-resolver元素...... 588
18.4.74 View-handler元素...... 588
18.5 扩展元素...... 589
18.6 元数据元素...... 590
18.7 使用Faces Console编辑配置文件...... 591
第19章 标准JSF组件库...... 593
19.1 JSF和JSP标签术语概览...... 593
19.2 获取并安装标准库...... 594
19.2.1 得到的内容(二进制)...... 594
19.2.2 得到的内容(源代码)...... 594
19.3 核心和HTML组件库参考...... 594
19.3.1 标准核心库...... 594
19.3.2 actionListener标签...... 596
19.3.3 attribute标签...... 596
19.3.4 convertDateTime标签...... 597
19.3.5 convertNumber标签...... 598
19.3.6 converter标签...... 599
19.3.7 facet标签...... 600
19.3.8 loadBundle标签...... 600
19.3.9 param组件...... 601
19.3.10 phaseListener标签(仅限1.2)...... 602
19.3.11 selectItem组件...... 603
19.3.12 selectItems标签...... 603
19.3.13 setPropertyActionListener标签(仅限1.2)...... 604
19.3.14 subview组件...... 605
19.3.15 validateDoubleRange标签...... 607
19.3.16 validateLength标签...... 607
19.3.17 validateLongRange标签...... 608
19.3.18 Validator标签...... 609
19.3.19 valueChangeListener标签...... 610
19.3.20 verbatim组件...... 611
19.3.21 view组件...... 611
19.4 标准HTML库...... 612
19.4.1 column组件...... 614
19.4.2 commandButton组件...... 615
19.4.3 commandLink组件...... 617
19.4.4 dataTable组件...... 619
19.4.5 form组件...... 622
19.4.6 graphicImage组件...... 623
19.4.7 inputHidden组件...... 625
19.4.8 inputSecret组件...... 626
19.4.9 inputText组件...... 628
19.4.10 inputTextarea组件...... 629
19.4.11 message组件...... 631
19.4.12 messages组件...... 632
19.4.13 outputFormat组件...... 634
19.4.14 outputLabel组件...... 635
19.4.15 outputLink组件...... 636
19.4.16 outputText组件...... 638
19.4.17 panelGrid组件...... 639
19.4.18 panelGroup组件...... 640
19.4.19 selectBooleanCheckbox组件...... 641
19.4.20 selectManyCheckbox组件...... 643
19.4.21 selectManyListbox组件...... 645
19.4.22 selectManyMenu组件...... 647
19.4.23 selectOneListbox组件...... 649
19.4.24 selectOneMenu组件...... 651
19.4.25 selectOneRadio组件...... 653
第20章 MyFaces实现和组件库...... 656
20.1 得到MyFaces.. 656
20.1.1 从二进制发行包中得到什么...... 657
20.1.2 从源代码发行包中得到什么...... 657
20.2 使用MyFaces.. 657
20.2.1 使用MyFaces JSF实现...... 658
20.2.2 使用MyFaces Tomahawk库...... 658
20.3 MyFaces扩展组件...... 660
20.3.1 公共扩展属性...... 661
20.3.2 commandButton组件...... 661
20.3.3 commandLink组件...... 662
20.3.4 dataTable组件...... 662
20.3.5 graphicImage组件...... 663
20.3.6 inputHidden组件...... 664
20.3.7 inputSecret组件...... 664
20.3.8 inputText组件...... 665
20.3.9 inputTextarea组件...... 665
20.3.10 message组件...... 665
20.3.11 messages组件...... 666
20.3.12 outputLabel组件...... 667
20.3.13 outputText组件...... 667
20.3.14 panelGrid组件...... 668
20.3.15 panelGroup组件...... 668
20.3.16 selectBooleanCheckbox组件...... 669
20.3.17 selectManyCheckbox组件...... 669
20.3.18 selectManyListbox组件...... 669
20.3.19 selectManyMenu组件...... 670
20.3.20 selectOneListbox组件...... 670
20.3.21 selectOneMenu组件...... 671
20.3.22 selectOneRadio组件...... 671
20.4 MyFaces定制组件...... 672
20.4.1 公共属性...... 674
20.4.2 aliasBean组件...... 675
20.4.3 aliasBeansScope组件...... 675
20.4.4 buffer组件...... 676
20.4.5 checkbox组件...... 676
20.4.6 collapsiblePanel组件...... 677
20.4.7 commandNavigation组件...... 678
20.4.8 commandNavigation2组件...... 679
20.4.9 commandSortHeader组件...... 681
20.4.10 dataList组件...... 682
20.4.11 dataScroller组件...... 683
20.4.12 div组件...... 685
20.4.13 htmlTag组件...... 686
20.4.14 inputCalendar组件...... 687
20.4.15 inputDate组件...... 689
20.4.16 inputFileUpload组件...... 690
20.4.17 inputHTML组件...... 692
20.4.18 inputTextHelp组件...... 694
20.4.19 jscookMenu组件...... 695
20.4.20 jsValueChangeListener组件...... 696
20.4.21 jsValueSet组件...... 697
20.4.22 newspaperTable组件...... 697
20.4.23 panelNavigation组件...... 699
20.4.24 panelNavigation2组件...... 700
20.4.25 panelStack组件...... 701
20.4.26 panelTab组件...... 702
20.4.27 panelTabbedPane组件...... 703
20.4.28 popup组件...... 704
20.4.29 radio组件...... 705
20.4.30 saveState组件...... 706
20.4.31 selectOneCountry组件...... 706
20.4.32 selectOneLanguage组件...... 707
20.4.33 stylesheet组件...... 709
20.4.34 tree组件...... 709
20.4.35 tree2组件...... 710
20.4.36 treeColumn组件...... 712
20.4.37 updateActionListener标签...... 713
20.5 MyFaces定制验证器...... 714
20.5.1 validateCreditCard验证器...... 714
20.5.2 validateEmail验证器...... 715
20.5.3 validateEqual验证器...... 716
20.5.4 validateRegExpr验证器...... 717
20.6 MyFaces对Tiles框架的支持...... 718
20.6.1 Tiles概述...... 718
20.6.2 使用MyFaces对Tiles的支持...... 719
第5部分 附 录
附录A Faces Console快速参考...... 729
A.1 支持的配置文件...... 730
A.2 获得并安装Faces Console.. 731
A.3 使用Faces Console作为独立应用程序...... 731
A.4 在Borland JBuilder内使用Faces Console.. 732
A.5 在Eclipse内使用Faces Console.. 734
A.6 在IBM Rational Application Developer for WebSphere中使用Faces Console. 737
A.7 在IntelliJ IDEA内使用Faces Console.. 739
A.8 在NetBeans和Sun ONE Studio(Forte)内使用Faces Console.. 741
A.9 在Oracle JDeveloper内使用Faces Console.. 743
A.10 配置Faces Console输出选项...... 745
附录B 第三方JSF组件库...... 746
B.1 Sun的扩展用户界面组件库...... 746
B.2 JScape的WebGalileo Faces.. 746
B.3 Oracle的ADF Faces.. 747
B.3.1 获得ADF Faces.. 747
B.3.2 ADF Faces组件参考...... 747
B.4 ADF Faces关键技术...... 752
B.4.1 ADF Faces部分页面渲染特性...... 752
B.4.2 ADF Faces processScope.. 755
B.4.3 使用ADF Faces对话框框架...... 757
B.4.4 ADF Faces皮肤技术...... 760
B.4.5 Oracle JDeveloper针对ADF Faces的可视化设计时体验...... 764
B.5 JSFCentral——第三方组件参考中心...... 765
附录C 从Struts迁移到Faces.. 766
C.1 相似与不同...... 766
C.2 开发风格...... 768
C.3 迁移策略:Struts-Faces集成库...... 768
C.3.1 满足编译时和运行时依赖关系...... 769
C.3.2 声明FacesServlet. 769
C.3.3 映射FacesServlet. 769
C.3.4 替换标准Struts请求处理器...... 770
C.3.5 迁移JSP页面...... 770
C.3.6 修改动作转发...... 771
附录D JSF的未来:Apache Shale.. 773
D.1 Shale、Java社区进程和创新...... 773
D.2 迁移考虑:是否应当采用Shale.. 775
D.3 获得和运行Shale.. 775
D.3.1 对话框管理器...... 776
D.3.2 应用程序管理器...... 777
D.4 Shale特性指南...... 778
D.4.1 ViewController(shale-core.jar)...... 778
D.4.2 对话框管理器(shale-core.jar)...... 781
D.4.3 应用程序管理器(shale-core.jar)...... 785
D.4.4 验证(shale-core.jar)...... 786
D.4.5 远程(Remoting)(shale-remoting.jar)...... 789
D.4.6 访问静态资源...... 789
D.4.7 调用MethodExpression... 791
D.5 结束语和参考资源...... 793
猜您喜欢