第一部分 XPages入门
第1章 XPages介绍
1.1 XPages基础
1.2 新技术?
1.3 不同的开发模式
1.4 变化的和不变的
1.5 新地平线
1.6 结语
第2章 准备工作
2.1 下载、版本和位置
2.2 安装Domino Designer
2.3 安装客户机补丁包
2.4 客户机配置
2.5 Domino Designer快速指南
2.5.1 Domino Designer欢迎界面
2.5.2 Domino Designer透视图
2.5.3 创建一个新的应用程序
2.5.4 创建一个XPage
2.5.5 在Notes客户机中预览
2.5.6 在Web浏览器中预览
2.5.7 向XPage添加控件
2.6 结语
第3章 创建第一个XPages应用
3.1 奠定基础
3.2 视图和表单
3.3 创建一个XPages视图
3.4 CRUD
3.5 结语
第二部分 XPages开发:第一原则
第4章 剖析XPage
4.1 到底什么是XPage
4.2 理解XPage标记
4.2.1 XML入门
4.2.2 XPages XML语法
4.2.3 简单属性
4.2.4 复杂属性
4.2.5 复杂值
4.2.6 计算属性
4.2.7 数据绑定
4.2.8 XPages标签
4.3 数据源
4.3.1 Domino文档
4.3.2 Domino视图
4.3.3 数据上下文
4.4 控件
4.4.1 编辑控件
4.4.2 命令控件
4.4.3 选择控件
4.4.4 显示控件
4.4.5 文件处理控件
4.5 容器
4.5.1 面板
4.5.2 表格
4.5.3 视图
4.5.4 数据表格
4.5.5 重复控件
4.5.6 包含页面
4.5.7 带标签的面板
4.5.8 区域
4.6 XPage资源
4.6.1 Script库
4.6.2 样式表
4.6.3 资源包
4.6.4 Dojo模块
4.6.5 通用头资源
4.6.6 元数据资源
4.7 转换器
4.8 验证器
4.9 简单操作
4.10 客户机脚本
4.11 HTML标签
4.12 结语
第5章 XPages与JavaServer Faces
5.1 什么是JavaServer Faces
5.2 JSF基础
5.3 XPage如何扩展JSF
5.3.1 基于XML的表示层
5.3.2 请求处理生命周期
5.3.3 用户界面组件模型
5.3.4 标准用户界面组件
5.3.5 值绑定和方法绑定
5.3.6 XPages内置变量
5.4 结语
第6章 创建XPages业务逻辑
6.1 添加业务逻辑
使用xp:eventHandler标签
6.2 简单操作
6.2.1 更改文档方式
6.2.2 确认操作
6.2.3 创建响应文档
6.2.4 删除文档
6.2.5 删除所选文档
6.2.6 执行客户机脚本
6.2.7 执行脚本
6.2.8 修改字段
6.2.9 打开页面
6.2.10 发布组件属性
6.2.11 发布视图列
6.2.12 保存数据源
6.2.13 保存文档
6.2.14 设置组件方式操作
6.2.15 设置值
6.2.16 操作组
6.3 在XPages中使用JavaScript
6.3.1 服务器端JavaScript
6.3.2 客户机JavaScript
6.4 结语
第三部分 数据绑定
第7章 处理Domino文档
7.1 Domino文档数据源
7.1.1 创建和编辑文档
7.1.2 URL参数的使用
7.1.3 创建响应文档
7.1.4 执行表单逻辑
7.1.5 并发文档更新
7.1.6 多文档数据源
7.1.7 文档数据源事件
7.1.8 通用数据源属性
7.1.9 其他数据源属性
7.2 以编程的方式使用Domino文档
7.2.1 简单操作
7.2.2 JavaScript
7.3 富文档
7.4 结语
第8章 使用Domino视图
8.1 databaseName属性
8.2 视图数据源过滤器
8.2.1 categoryFilter属性
8.2.2 search属性和searchMaxDocs属性
8.2.3 parentId属性
8.2.4 ignoreRequestParams属性
8.2.5 keys和keysExactMatch属性
8.3 其他视图内容修改器
8.3.1 startKeys属性
8.3.2 expandLevel属性
8.4 多视图页面
8.4.1 requestParamPrefix属性
8.5 文件夹与视图
8.6 视图数据加载
8.6.1 loaded属性和scope属性
8.6.2 postOpenView属性和queryOpenView属性
8.7 视图数据缓存
8.8 列排序
8.9 结语
第9章 视图基础扩展
9.1 尝试任意一种视图控件
9.2 视图控件:一次亲密接触
9.2.1 列值的全新展现
9.2.2 视图面板华丽变身
9.2.3 分类功能的使用
9.2.4 视图属性与视图面板属性
9.3 数据表格
利用数据表格来构建一个迷你嵌入式概要视图
9.4 重复控件
9.4.1 重复控件设计模式
9.4.2 嵌套重复控件
9.4.3 丰富富文本内容
9.5 有趣的分页器
9.6 结语
第四部分 可编程性
第10章 定制控件
10.1 分而治之
10.2 定制控件入门
10.3 使用属性定义
10.3.1 属性选项卡
10.3.2 验证选项卡
10.3.3 可视选项卡
10.3.4 属性定义总结
10.4 使用compositeData对象
10.5 发送/接收消息
多个实例和属性组
10.6 定制控件设计模式
10.6.1 聚合容器模式
10.6.2 布局容器模式
10.7 结语
第11章 高级脚本
11.1 应用程序框架
11.2 AJAX和部分更新
11.2.1 部分更新:Out-of-the-Box模式!
11.2.2 部分更新:Doing-It-My-Way模式!
11.3 事件参数
11.4 Dojo集成
11.4.1 dojoTheme和dojoParseOnLoad属性
11.4.2 dojoModule资源
11.4.3 dojoType和dojoAttributes属性
11.4.4 集成Dojo部件及扩展Dojo类路径
11.5 使用传统的Notes/Domino开发模块
11.5.1 使用@Functions、@Commands以及公式语言
11.5.2 使用Agents、内存文档以及profile文档
11.6 Managed Beans
11.7 结语
第12章 XPage可扩展性
12.1 如何创建一个新的用户界面控件
12.2 组件例子
12.3 开始
12.3.1 创建初始应用
12.3.2 在Domino Designer透视图中增加包资源管理器
12.3.2 增加一个Java源文件夹
12.4 构造一个组件
12.4.1 创建一个UI组件扩展类
12.4.2 为UI组件扩展创建定义标签的.xsp-config文件
12.4.3 创建一个Renderer并且在应用配置中进行注册(faces-config.xml)
12.4.4 快速测试应用来验证到目前为止我们的功能OK
12.5 使用组件属性
12.5.1 组件Properties和Attributes
12.5.2 为组件添加一个Property
12.5.3 State Holder:在请求之间保存状态
12.5.4 指定简单Properties
12.5.5 继承xsp-config Properties
12.6 创建初始的xsp-config定义
12.6.1 创建base.xsp-config文件
12.6.2 创建和base.xsp-config文件中组属性定义对应的接口
12.6.3 在Domino Designer中重新访问组件属性
12.6.4 定义复杂属性
12.6.5 完成UISpinner组件的xsp-config配置文件
12.6.6 完成UI组件扩展,UISpinner
12.6.7 完成UISpinnerRenderer渲染器
12.7 创建使用UISpinner组件的应用实例
12.7.1 测试新UI组件扩展
12.7.2 创建Backing Bean
12.7.3 注册Backing Bean
12.7.4 创建最终版本的测试应用程序
12.7.5 好看的外观
12.7.6 测试以保证所有的功能可用
12.8 从这里到哪里去
12.8.1 XPages扩展API开发者指南
12.8.2 XPages扩展库
12.8.3 IBM DeveloperWorks
12.9 结语
第13章 Notes客户机中的XPages
13.1 总体思考
13.2 Notes客户机中的XPages入门
13.3 三、二、一……起飞
13.4 书签
13.5 脱机工作
13.6 XPages在客户机与Web中的区别
13.7 其他微妙的区别
13.8 XPages,Notes的好公民
13.9 enableModifiedFlag和disableModifiedFlag的介绍
13.10 管理标签选项卡窗口
13.11 Notes链接vs Domino链接
13.12 一些调试技巧
13.13 XPages和组合应用程序
13.13.1 创建一个XPages应用程序组件
13.13.2 创建一个组件来监听您的XPages组件
13.13.3 组装组合应用程序:聚合XPages讨论库组件和Google窗口小部件
13.13.4 一个组件可以同时接收和发布事件
13.14 进一步探索组合应用程序
第五部分 应用用户体验
第14章 XPages主题
14.1 它曾经是这样的…但现在不是了
14.2 通过样式进行美化
14.2.1 手动设置样式属性
14.2.2 理解style属性如何使用
14.2.3 通过计算动态生成style属性值
14.3 通过样式类进行美化
14.3.1 不劳而获
14.3.2 了解如何使用styleClass属性
14.3.3 动态计算styleClass属性值
14.3.4 扩展的styleClass和style属性
14.4 主题
14.4.1 什么是主题
14.4.2 主题可以做什么
14.4.3 主题架构和继承
14.4.4 主题的使用
14.4.5 主题资源
14.4.6 资源路径
14.4.7 主题属性、themeId、控件定义、控件属性
14.5 结语
第15章 国际化
15.1 概述
15.2 使用本地化选项
15.2.1 本地化资源束文件
15.2.2 设置本地化选项
15.2.3 测试本地化应用程序
15.2.4 翻译器
15.2.5 合并XPage的修改
15.2.6 陷阱!
15.3 本地化计算表达式和JavaScript
15.3.1 添加一个资源束
15.3.2 本地化计算表达式
15.3.3 本地化客户机JavaScript
15.4 本地化脚本库
15.4.1 服务器端脚本库
15.4.2 客户机脚本库
15.5 启用国际化
15.6 XPages中的区域
15.7 废弃的区域代码
15.8 结语
第六部分 性能、可扩展性和安全
第16章 应用性能和可扩展性
16.1 黄金法则
16.2 了解请求处理生命周期
16.2.1 GET请求和JSF生命周期
16.2.2 POST请求和JSF生命周期
16.3 降低CPU使用率
16.3.1 GET vs POST请求
16.3.2 局部更新
16.3.3 局部执行模式
16.4 降低内存使用率
16.4.1 HTTPJVMMaxHeapSize和HTTPJVMMaxHeapSizeSet参数
16.4.2 xsp.persistence.*属性
16.4.3 dataCache属性
16.5 结语
第17章 安全性
17.1 Notes/Domino安全性和XPages
17.1.1 服务器层的安全性
17.1.2 应用程序层的安全性
17.1.3 设计元素层的安全性
17.1.4 文档层的安全性
17.1.5 工作站执行控制列表(ECL)层的安全性
17.1.6 有用的资源
17.2 让我们从一个例子开始
17.2.1 开始创建一个应用程序
17.2.2 实现访问控制列表
17.2.3 使用您的签名来签名XPages
17.3 可编程性限制(Programability Restrictions)
17.3.1 Sign or Run Unrestricted Methods and Operations域
17.3.2 Sign Agents to Run on Behalf of Someone Else域
17.3.3 Sign Agents or XPages to Run on Behalf of the Invoker域
17.3.4 Sign Script Libraries to Run on Behalf of Someone Else域
17.4 受限操作(Restricted Operation)
17.5 XPages安全检查
NSF类加载器桥接(ClassLoader Bridge)
17.6 Notes客户机的XPages安全性
执行控制列表(ECL)
17.7 活动内容过滤
17.8 公共权限(Public Access)
17.8.1 为XPages设置公共权限
17.8.2 在XPages中检查公共权限
17.9 SessionAsSigner
17.10 XPages Java安全异常的故障诊断
17.11 结语
第七部分 附录
附录A XSP编程参考
附录A.1 XSP标签参考
附录A.2 XSP Java类
附录A.3 Notes/Domino Java API类
附录A.4 XSP JavaScript伪类
附录B XSP样式类参考
附录B.1 XSP CSS文件
附录B.2 XSP样式类
附录C 有用的XPages技术网站
展开