JavaServer Faces完全参考手册

JavaServer Faces完全参考手册
作 者: Chiris Schalk Ed Burns
出版社: 人民邮电出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 暂缺
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  本书提供作译者介绍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项目的委员,...

内容简介

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)、可访问性、国际化和本地化。...

图书目录

第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