第一部分 XPages入门第1章 XPages介绍 3
1.1 XPages基础 3
1.2 新技术? 4
1.3 不同的开发模式 4
1.4 变化的和不变的 5
1.5 新地平线 6
1.6 结语 6
第2章 准备工作 7
2.1 下载、版本和位置 7
2.2 安装Domino Designer 8
2.3 安装客户机补丁包 8
2.4 客户机配置 8
2.5 Dommo Designer快速指南 9
2.5.1 Domino Designer欢迎界面 9
2.5.2 Domino Designer透视图 10
2.5.3 创建一个新的应用程序 10
2.5.4 创建一个XPage 12
2.5.5 在Notes客户机中预览 12
2.5.6 在Web浏览器中预览 13
2.5.7 向XPage添加控件 15
2.6 结语 17
第3章 创建第一个XPages应用 18
3.1 奠定基础 18
3.2 视图和表单 20
3.3 创建一个XPages视图 24
3.4 CRUD 29
3.5 结语 33
第二部分 XPages开发:第一原则第4章 剖析XPage 37
4.1 到底什么是XPage 37
4.2 理解XPage标记 38
4.2.1 XML入门 38
4.2.2 XPages XML语法 40
4.2.3 简单属性 41
4.2.4 复杂属性 43
4.2.5 复杂值 43
4.2.6 计算属性 44
4.2.7 数据绑定 47
4.2.8 XPages标签 48
4.3 数据源 48
4.3.1 Domino文当 49
4.3.2 Domino视图 49
4.3.3 数据上下文 50
4.4 控件 51
4.4.1 编辑控件 51
4.4.2 命令控件 55
4.4.3 选择控件 58
4.4.4 显示控件 65
4.4.5 文件处理控件 67
4.5 容器 69
4.5.1 面板 69
4.5.2 表格 72
4.5.3 视图 72
4.5.4 数据表格 74
4.5.5 重复控件 75
4.5.6 包含页面 78
4.5.7 带标签的面板 78
4.5.8 区域 79
4.6 XPage资源 80
4.6.1 Script库 80
4.6.2 样式表 81
4.6.3 资源包 83
4.6.4 Dojo模块 83
4.6.5 通用头资源 84
4.6.6 元数据资源 84
4.7 转换器 85
4.8 验证器 87
4.9 简单操作 93
4.10 客户机脚本 98
4.11 HTML标签 99
4.12 结语 100
第5章 XPages与JavaServer Faces 101
5.1 什么是JavaServer Faces 102
5.2 JSF基础 102
5.3 XPage如何扩展JSF 106
5.3.1 基于XML的表示层 109
5.3.2 请求处理生命周期 109
5.3.3 用户界面组件模型 109
5.3.4 标准用户界面组件 113
5.3.5 值绑定和方法绑定 115
5.3.6 XPages内置变量 116
5.4 结语 118
第6章 创建XPages业务逻辑 119
6.1 添加业务逻辑 119
使用xp:eventHandler标签 121
6.2 简单操作 126
6.2.1 更改文档方式 127
6.2.2 确认操作 127
6.2.3 创建响应文档 128
6.2.4 删除文档 129
6.2.5 删除所选文档 130
6.2.6 执行客户机脚本 130
6.2.7 执行脚本 131
6.2.8 修改字段 131
6.2.9 打开页面 132
6.2.10 发布组件属性 133
6.2.11 发布视图列 134
6.2.12 保存数据源 135
6.2.13 保存文档 136
6.2.14 设置组件方式操作 138
6.2.15 设置值 139
6.2.16 操作组 139
6.3 在XPages中使用JavaScript 140
6.3.1 服务器端JavaScript 141
6.3.2 客户机JavaScript 156
6.4 结语 160
第三部分 数据绑定第7章 处理Domino文档 163
7.1 Domino文档数据源 163
7.1.1 创建和编辑文档 165
7.1.2 URL参数的使用 166
7.1.3 创建响应文档 166
7.1.4 执行表单逻辑 169
7.1.5 并发文档更新 171
7.1.6 多文档数据源 172
7.1.7 文档数据源事件 174
7.1.8 通用数据源属性 176
7.1.9 其他数据源属性 176
7.2 以编程的方式使用Domino文档 177
7.2.1 简单操作 177
7.2.2 JavaScript 178
7.3 富文档 179
7.4 结语 182
第8章 使用Domino视图 183
8.1 databaseName属性 184
8.2 视图数据源过滤器 185
8.2.1 categoryFilter属性 185
8.2.2 search属性和searchMaxDocs属性 187
8.2.3 parentId属性 189
8.2.4 ignoreRequestParams属性 190
8.2.5 keys和keysExactMatch属性 190
8.3 其他视图内容修改器 193
8.3.1 startKeys属性 193
8.3.2 expandLevel属性 194
8.4 多视图页面 195
8.4.1 requestParamPrefix属性 196
8.5 文件夹与视图 198
8.6 视图数据加载 199
8.6.1 loaded属性和scope属性 199
8.6.2 postOpen View属性和queryOpen View属性 199
8.7 视图数据缓存 200
8.8 列排序 204
8.9 结语 205
第9章 视图基础扩展 206
9.1 尝试任意一种视图控件 206
9.2 视图控件:一次亲密接触 208
9.2.1 列值的全新展现 209
9.2.2 视图面板华丽变身 210
9.2.3 分类功能的使用 221
9.2.4 视图属性与视图面板属性 227
9.3 数据表格 230
利用数据表格来构建一个迷你嵌入式概要视图 235
9.4 重复控件 239
9.4.1 重复控件设计模式 240
9.4.2 嵌套重复控件 241
9.4.3 丰富富文本内容 243
9.5 有趣的分页器 244
9.6 结语 246
第四部分 可编程性第10章 定制控件 249
10.1 分而治之 249
10.2 定制控件入门 250
10.3 使用属性定义 257
10.3.1 属性选项卡 259
10.3.2 验证选项卡 262
10.3.3 视选项卡 263
10.3.4 属性定义总结 264
10.4 使用compositeData对象 264
10.5 发送/接收消息 269
多个实例和属性组 271
10.6 定制控件设计模式 273
10.6.1 聚合容器模式 273
10.6.2 布局容器模式 274
10.7 结语 279
第11章 高级脚本 280
11.1 应用程序框架 280
11.2 AJAX和部分更新 281
11.2.1 部分更新:Out-of-the-Box模式! 281
11.2.2 部分更新:Doing-It-My-Way模式! 288
11.3 事件参数 293
11.4 Dojo集成 295
11.4.1 dojoTheme和dojoParseOnLoad属性 296
11.4.2 dojoModule资源 297
11.4.3 dojoType和dojoAttributes属性 298
11.4.4 集成Dojo部件及扩展Dojo类路径 298
11.5 使用传统的Notes/Domino开发模块 307
11.5.1 使用@Functions、@Commands以及公式语言 308
11.5.2 使用Agents、内存文档以及profile文档 310
11.6 Managed Beans 316
11.7 结语 321
第12章 XPage可扩展性 322
12.1 如何创建一个新的用户界面控件 322
12.2 组件例子 323
12.3 开始 324
12.3.1 创建初始应用 324
12.3.2 在Domino Designer透视图中增加包资源管理器 325
12.3.2 增加一个Java源文件夹 325
12.4 构造一个组件 327
12.4.1 创建一个UI组件扩展类 326
12.4.2 为UI组件扩展创建定义标签的.xsp-config文件 328
12.4.3 创建一个Renderer并且在应用配置中进行注册(faces-config.xml) 331
12.4.4 快速测试应用来验证到目前为止我们的功能OK 333
12.5 使用组件属性 334
12.5.1 组件Properties和Attributes 334
12.5.2 为组件添加一个Property 334
12.5.3 State Holder:在请求之间保存状态 335
12.5.4 指定简单Properties 335
12.5.5 继承xsp-config Properties 336
12.6 创建初始的xsp-config定义 339
12.6.1 创建base.xsp-config文件 339
12.6.2 创建和base.xsp-config文件中组属性定义对应的接口 342
12.6.3 在Domino Designer中重新访问组件属性 344
12.6.4 定义复杂属性 344
12.6.5 完成UISpinner组件的xsp-config配置文件 353
12.6.6 完成UI组件扩展,UISpinner 360
12.6.7 完成UISpinnerRenderer渲染器 363
12.7 创建使用UISpinner组件的应用实例 367
12.7.1 测试新UI组件扩展 367
12.7.2 创建Backing Bean 368
12.7.3 注册Backing Bean 369
12.7.4 创建最终版本的测试应用程序 370
12.7.5 好看的外观 373
12.7.6 测试以保证所有的功能可用 373
12.8 从这里到哪里去 374
12.8.1 XPages扩展API开发者指南 374
12.8.2 XPages扩展库 374
12.8.3 IBMDeveloperWorks 375
12.9 结语 375
第13章 Notes客户机中的XPages 376
13.1 总体思考 376
13.2 Notes客户机中的XPages入门 378
13.3 三、二、一……起飞 379
13.4 书签 380
13.5 脱机工作 382
13.6 XPages在客户机与Web中的区别 385
13.7 其他微妙的区别 386
13.8 XPages,Notes的好公民 388
13.9 enableModifiedFlag和disableModifiedFlag的介绍 390
13.10 管理标签选项卡窗口 392
13.11 Notes链接vs Domino链接 396
13.12 一些调试技巧 400
13.13 XPages和组合应用程序 402
13.13.1 创建一个XPages应用程序组件 403
13.13.2 创建一个组件来监听您的XPages组件 404
13.13.3 组装组合应用程序:聚合XPages讨论库组件和Google窗口小部件 406
13.13.4 一个组件可以同时接收和发布事件 410
13.14 进一步探索组合应用程序 412
第五部分 应用用户体验第14章 XPages主题 417
14.1 它曾经是这样的…但现在不是了 417
14.2 通过样式进行美化 418
14.2.1 手动设置样式属性 422
14.2.2 理解style属性如何使用 424
14.2.3 通过计算动态生成style属性值 424
14.3 通过样式类进行美化 425
14.3.1 不劳而获 426
14.3.2 了解如何使用styleClass属性 430
14.3.3 动态计算styleClass属性值 432
14.3.4 扩展的styleClass和style属性 434
14.4 主题 438
14.4.1 什么是主题 438
14.4.2 主题可以做什么 439
14.4.3 主题架构和继承 440
14.4.4 主题的使用 446
14.4.5 主题资源 453
14.4.6 资源路径 460
14.4.7 主题属性、themeId、控件定义、控件属性 466
14.5 结语 477
第15章 国际化 478
15.1 概述 478
15.2 使用本地化选项 478
15.2.1 本地化资源束文件 480
15.2.2 设置本地化选项 480
15.2.3 测试本地化应用程序 483
15.2.4 翻译器 484
15.2.5 合并XPage的修改 486
15.2.6 陷阱! 488
15.3 本地化计算表达式和JavaScript 490
15.3.1 添加一个资源束 490
15.3.2 本地化计算表达式 492
15.3.3 本地化客户机JavaScript 493
15.4 本地化脚本库 493
15.4.1 服务器端脚本库 493
15.4.2 客户机脚本库 494
15.5 启用国际化 495
15.6 XPages中的区域 496
15.7 废弃的区域代码 499
15.8 结语 500
第六部分 性能、可扩展性和安全第16章 应用性能和可扩展性 503
16.1 黄金法则 503
16.2 了解请求处理生命周期 504
16.2.1 GET请求和JSF生命周期 504
16.2.2 POST请求和JSF生命周期 505
16.3 降低CPU使用率 505
16.3.1 GET vs POST请求 506
16.3.2 局部更新 509
16.3.3 局部执行模式 511
16.4 降低内存使用率 514
16.4.1 HTTPJVMMaxHeapSize和HTTPJVMMaxHeapSizeSet参数 514
16.4.2 xsp.persistence.属性 514
16.4.3 dataCache属性 515
16.5 结语 516
第17章 安全性 517
17.1 Notes/Domino安全性和XPages 517
17.1.1 服务器层的安全性 517
17.1.2 应用程序层的安全性 518
17.1.3 设计元素层的安全性 520
17.1.4 文档层的安全性 525
17.1.5 工作站执行控制列表(ECL)层的安全性 527
17.1.6 有用的资源 527
17.2 让我们从一个例子开始 527
17.2.1 开始创建一个应用程序 527
17.2.2 实现访问控制列表 529
17.2.3 使用您的签名来签名XPages 530
17.3 可编程性限制(Programability Restrictions) 530
17.3.1 Sign or Run Unrestricted Methods and Operations域 531
17.3.2 Sign Agents to Run on Behalf of Someone Else域 531
17.3.3 Sign Agents or XPages to Run on Behalfofthe Invoker域 532
17.3.4 Sign Script Libraries to Run on Behalf of Someone Else域 532
17.4 受限操作(Restricted Operation) 532
17.5 XPages安全检查 533
NSF类加载器桥接(ClassLoader Bridge) 534
17.6 Notes客户机的XPages安全性 534
执行控制列表(ECL) 535
17.7 活动内容过滤 537
17.8 公共权限(Public Access) 539
17.8.1 为XPages设置公共权限 539
17.8.2 在XPages中检查公共权限 540
17.9 SessionAsSigner 540
17.10 XPages Java安全异常的故障诊断 542
17.11 结语 542
第七部分 附录附录A XSP编程参考 547
附录A.1 XSP标签参考 547
附录A.2 XSP Java类 548
附录A.3 Notes/Domino Java API类 549
附录A.4 XSP JavaScript伪类 550
附录B XSP样式类参考 552
附录B.1 XSP CSS文件 552
附录B.2 XSP样式类 552
附录C 有用的XPages技术网站 556