Oracle 学习资料库
本教程将向 JavaServer Faces 开发人员介绍一些由 Oracle ADF Faces 提供的较为复杂的用户界面组件以及开源 Trinidad 组件,这些都可以从 Apache 孵化器中获得。在本教程的学习期间,您将利用 Oracle JDeveloper 探索 ADF Faces。
所需时间:
大约 45 分钟
本教程包括下列主题:
| |
概述 |
| |
前提条件 |
| |
部分页面呈现 |
| |
ADF Faces 对话框框架 |
| |
|
| |
树组件 |
| |
总结 |
将鼠标置于此图标上
可以加载和查看本教程的所有屏幕截图。(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)
注:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。可以通过单击各个屏幕截图来将其隐藏。
您将利用 Oracle JDeveloper 通过一系列的独立主题体验 ADF Faces。 您将从一个预先建立的应用程序开始,实现一些复杂的 UI 组件。预先建立的工作区还使用了一些高级特性,如菜单和部分页面呈现。
开始本教程之前,您应该:
| 1. |
能够访问或已经安装了 Oracle JDeveloper (10.1.3.1.0) 或 Oracle JDeveloper (10.1.3.2.0)。可以从 Oracle 技术网下载它。 |
| 2. |
单击 此处将预先建立的 10.1.3.1 版应用程序(zip 文件格式)下载到您的系统上。 或者 单击 此处将预先建立的 10.1.3.2 版应用程序(zip 文件格式)下载到您的系统上。 |
| 3. |
将 jsftrinidad. zip 文件解压缩到 ( /jdev/mywork/ ) 目录中。 |
| 4. |
启动 JDeveloper。双击 JDeveloper 可执行文件 jdeveloper.exe ,该文件位于您解压缩它的根目录 ( ) 中。 如果 Migrate User Settings 对话框打开,请单击 NO。 关闭 Tip of the Day 窗口。 |
| 5. |
现在应显示 JDeveloper IDE。 |
| 6. |
在 JDeveloper 中,选择 File | Open。在 Open 对话框中,选择 ( /jdev/mywork/jsftrinidad ) 目录中的文件 jsftrinidad.jws,然后单击 Open。 |
ADF Faces 框架可让您使用一个命令组件局部刷新其他组件。
|
1. |
在 JDeveloper 中,打开 viewlayer 项目,右键单击 viewlayer 节点,然后从上下文中选择 Open JSF Navigation。 图表应如下所示: |
||||||||
| 2. |
双击 Dialog.jspx 图标,打开页面的设计编辑器。 该页面已经预先定义了输入文本域。您将添加 2 个下拉列表。 |
||||||||
|
3. |
从组件选项板中,将 SelectOneChoice 组件拖放到 Address 输入文本域的下方。系统将显示一个对话框,您可以通过它将 SelectOneChoice 属性绑定到列表源和目标值属性。 |
||||||||
|
4. |
在
Select 选项卡上,按
Value 域旁边的
Bind 按钮,并查找
dialogbean 托管 bean。在该 bean 中,选择
stateSelectItems 并单击
关闭表达式语言生成器会创建以下绑定字符串: #{dialogbean.stateSelectItems}。当然,如果您不需要声明式编辑器,可以在值域中直接键入字符串。 在 Common Properties 选项卡上,输入 State 作为 Label 值,并输入 #{userbean.state} 作为 Value。这将确保把从列表中选择的值写入用户 bean,该 bean 表示该项目的模型。 选择
Advanced Properties 选项卡,然后选择
Bindings 属性并按
|
||||||||
|
5. |
还是在 Advanced Properties 选项卡中,设置以下属性
单击 OK。 注:将 immediate 属性设为 true 将跳过 JSF 生命周期,因为 select 操作不需要它。 |
||||||||
|
6. |
将另一个 SelectOneChoice 组件拖放到 State 组件下方。 |
||||||||
|
7. |
在 Select 选项卡上,为 #{dialogbean.citySelectItems} 添加值或使用表达式语言生成器。 |
||||||||
|
8. |
在 Common Properties 选项卡上,将 Label 设置为 City,并将 Value 设置为 #{userbean.city} 。 |
||||||||
|
9. |
选择
Advanced Properties 选项卡,并选择
Binding 属性。按
在 Binding 对话框中,从 Managed Beans 列表中选择 dialogbean。在 Property 值中,选择 selectOneChoice2 。 按 OK 创建新的绑定。 |
||||||||
|
10. |
选择
PartialTriggers 属性并按
按 New 按钮,并单击新创建的选择以显示下拉列表。从下拉列表中,选择 selectOneChoice1 选项。 注:一旦 State SelectOneChoice 更改了其选中的值,该设置将刷新 SelectOneChoice 组件。您可以使用 ADF Faces 中的部分页面呈现功能创建相关列表框。 按 OK 关闭 SelectOneChoice 对话框。 |
||||||||
|
11. |
右键单击 Applications Navigator 中的 Dialog.jspx,并从上下文中选择 Run。 |
||||||||
|
12. |
Dialog 页面将加载到默认浏览器中,并为您添加的域显示 2 个空白下拉列表。 |
||||||||
|
13. |
从州列表中选择一个州。 |
||||||||
|
14. |
然后,从城市列表中选择一个城市。 注:在显示 City 的值时会用到部分页面呈现。City 列表视州的选择而异。 关闭您的浏览器窗口。 |
通过 ADF Faces 对话框框架,您可以为用户显示模式对话窗口以搜索和选择信息,或者提供信息。利用对话框的进程作用域,您可以创建能够在页面之间共享值的向导型应用程序。可以为对话框注册一个返回监听器,以通知启动组件有关用户关闭对话框的信息。相应地,也可以读取和使用从对话框传递到调用页面的值。
在这一部分中,您将创建一个 JSF 页面以显示新创建的用户。要创建一个新用户,需要使用按钮启动一个显示在对话框中的数据输入表单。对话框的返回值是一个消息字符串,其中包含创建用户的实际日期和时间。
| |
创建对话窗口 | |
| |
构建针对对话窗口的调用 | |
|
1. |
返回到 JDeveloper,单击 faces-config.xml 选项卡打开页面流图。 |
||||||
|
2. |
从 JDeveloper 组件选项板 (Ctrl+shift+P) 中,选择 JSF Navigation Case 组件,然后绘制一条从 Main.jspx 页面到 Dialog.jspx 页面的直线。 |
||||||
|
3. |
将导航链接从 success 重命名为 dialog:open 。在导航案例中使用前缀“dialog:”,以便向 ADF Faces 表明该页面应当在对话框中显示。 |
||||||
| 4. |
双击 Dialog.jspx 图标,打开页面的设计编辑器。 |
||||||
|
5. |
从 JDeveloper 的组件选项板中,在第二个 SelectOneChoice (City) 下方添加一个 InputTextField,并设置下列属性:
|
||||||
|
6. |
要创建一个重置和提交按钮,将 PanelGroup 组件从组件选项板拖放到 PanelForm 的 footer facet 中。 |
||||||
|
7. |
通过组件选项板,在 panelGroup 中添加一个 ResetButton 和一个 CommandButton 组件。在属性检查器中,将重置按钮的 Text 属性设置为 Reset,将提交按钮的 Text 属性设置为 Submit。 |
||||||
|
8. |
选择
Submit 按钮,并在属性检查器中选择
Action 属性。按
单击 OK。 |
在这一部分中,您将在 Main 页面中创建一个调用 Dialog 页面的 Action。然后,通过运行 Main.jspx 页面,您可以尝试利用外观特性更改应用程序的外观。
|
1. |
通过在 Applications Navigator 或 faces-config.xml 可视化编辑器中双击文件项,打开 Main.jspx 文件。 |
|||||||||||||||
|
2. |
选择 Create Customer 按钮,打开属性检查器并设置以下属性:
选择
ReturnListener 属性并按
按 OK 关闭对话框。 |
|||||||||||||||
|
3. |
在 Structure 窗口中,选择 af:panelPage 元素并打开属性检查器。 |
|||||||||||||||
|
4. |
选择
PartialTriggers 属性并按
注:现有的 skinSelector 项是一个预先定义的部分触发器,用于动态地更改页面外观,即外观特性。在运行 Main.jspx 页面时,您可以对外观特性进行探索。 |
|||||||||||||||
|
5. |
在显示的对话框中按 New 按钮。选择新条目,并从下拉列表中选择 createUserButton。按下此按钮时,这将刷新面板页。 单击 OK。 |
|||||||||||||||
|
6. |
转到 faces-config.xml 图,并选择 Main.jspx 图标。 |
|||||||||||||||
|
7. |
右键单击并选择 Run 选项,对应用程序进行测试。 |
|||||||||||||||
|
8. |
您的默认浏览器中将显示 Main 页面。 |
|||||||||||||||
|
9. |
单击 Skin Selector 项旁边的下拉列表,并选择 OOW Skin 值。页面将刷新,并显示一个新 UI 以反映 oow 样式表。 注: oow.css 样式表在 Web Content > skins 文件夹中定义。 |
|||||||||||||||
|
10. |
您可以将 Skin Selector 重新设置为原来的 Oracle Skin 值。 单击 Create Customer 按钮调出对话框。 |
|||||||||||||||
|
11. |
在 Dialog 窗口中,用您选择的值填写表单。 单击 Submit。 |
|||||||||||||||
|
12. |
Main 页面将通过页面底部的信息消息来反映在对话框窗口中输入的值。 |
|||||||||||||||
|
13. |
关闭浏览器窗口。 |
在此练习中,您将使用单选和多选表格组件。此外,还将学习如何以编程方式启动对话框。练习的第一部分是利用编辑功能构建一个单选表格。第二部分将运行 Table.jspx 文件以及探究多选表格组件,该组件已在工作区中预先定义。
|
1. |
在 faces-config.xml 编辑器中,双击 Table.jspx 图标打开页面。 |
||||||||||||||||||||||||
|
2. |
从组件选项板中,将
table 组件拖放到
Single Row Select 选项卡。
|
||||||||||||||||||||||||
| 3. |
在表格绑定向导中,按
Next 跳过欢迎页面。在第 1 步中,按
Value 域旁边的
Bind 按钮。从表达式语言生成器中,选择
singleselectionhandler > tableModel 并单击
单击 OK。 |
||||||||||||||||||||||||
| 4. |
将 Var 域的值设置为 row。 按 Data Type Hint 域的 Browse 按钮,并键入 Customer。从列表中选择 oracle.adffaces.handson.model 程序包的 CustomerBean 类。 单击 OK。 单击 Next。 |
||||||||||||||||||||||||
| 5. |
在表向导的第 2 步中,删除名为 Selected 的列,并将列进行排序,以便它们按以下顺序显示: Full Name、 Address、 Phone、 Email、 Company。 单击 Next。 |
||||||||||||||||||||||||
|
6. |
在向导的第 3 步中,将列标记为可排序。排序是 ADF Faces 表格组件集成的一个特性。选择每一列并提供以下值
单击 Next。 |
||||||||||||||||||||||||
|
7. |
在向导的第 4 步中,定义以下值:
完成对话框以创建表格。 |
||||||||||||||||||||||||
|
8. |
在可视化编辑器(或者 Structure 窗格)中选择
table 并打开属性检查器。选择
Binding 属性并单击
|
||||||||||||||||||||||||
|
9. |
在 ManagedBean 域中选择 singleselectionhandler 项,在 Property 域中选择 table1。 按 OK 关闭对话框。 |
||||||||||||||||||||||||
|
10. |
在 Structure 窗格中,选择 af:table 组件。展开 table 节点,查看 Table facets 并展开它。 |
||||||||||||||||||||||||
|
11. |
从组件选项板中,将 PanelButtonBar 组件拖放到 Table facets 节点的 actions 控件中。 |
||||||||||||||||||||||||
|
12. |
将 CommandButton 组件从组件选项板拖放到 PanelButtonBar 中。 |
||||||||||||||||||||||||
|
13. |
选择 CommandButton 1 并打开属性检查器。将 Text 属性设置为 Edit,并将 PartialSubmit 属性设置为 true。 |
||||||||||||||||||||||||
|
14. |
选择
ActionListener 属性并按
单击 OK。 |
||||||||||||||||||||||||
|
15. |
在属性检查器中,仍然选择命令按钮的
ReturnListener 属性,并按
单击 OK。 |
||||||||||||||||||||||||
|
16. |
选择
Binding 属性并按
单击 OK。 |
||||||||||||||||||||||||
|
17. |
单击
Run 图标
在 Edit Customer 页面中,选择一个客户并单击 Edit。 |
||||||||||||||||||||||||
|
18. |
EditSingleTable Row 页面将显示选定的客户信息。根据您的需要进行更改。 单击 Submit 返回到 Table 页面。 |
||||||||||||||||||||||||
|
19. |
单击 Multi Row Select 链接,选择多个客户,然后单击 Edit。 |
||||||||||||||||||||||||
|
20. |
更新一个或多个选定客户,并单击 Commit 使更改生效。 |
||||||||||||||||||||||||
|
21. |
更新内容将在 Table 页面上反映出来。 |
||||||||||||||||||||||||
|
22. |
关闭浏览器窗口。 |
本部分将演示如何在层级式树组件与 ADF Faces 表格组件之间建立主-从关系。底层数据模型已在教程工作区中预先定义,本部分将构建树组件和表格组件。
| 1. |
在 faces-config.xml 图中,双击 Tree.jspx 图标打开页面,以创建 ADF Faces 层级式树组件并将其绑定到所提供的树形数据模型。 |
||||||||||
| 2. |
在组件选项板中,将 Tree 组件拖放到页面中已有的 PanelPage 组件上。 |
||||||||||
| 3. |
在打开的对话框中,提供下列值
单击 OK。 |
||||||||||
| 4. |
从组件选项板中,将 CommandLink 组件拖放到 af:outputText 组件旁边。此操作可在可视化编辑器或 Structure 窗口中完成。如果树节点是一个部门,则只显示命令链接。否则,会显示 outputComponent。通过树节点的 nodeType 属性,您可以确定节点的类型。 |
||||||||||
| 5. |
打开属性检查器,并将 CommandLink 的 Text 属性设置为 #{node.description} 。 |
||||||||||
| 6. |
将
Rendered 属性值设置为
#{node.nodeType == "department"}
。为此,您需要单击 Rendered 属性域,并通过单击属性检查器工具栏中的数据库图标
单击 OK。 |
||||||||||
| 7. |
要连接命令链接与 JSF 活动,请选择
ActionListener 属性并按
|
||||||||||
| 8. |
选择 treehandler 作为 Managed Bean 属性。选择 treeNodeSelected 作为 Method。 单击 OK。 |
||||||||||
| 9. |
选择 af:outputText 组件并打开属性检查器。 |
||||||||||
| 10. |
将
Rendered 属性值设置为
#{node.nodeType != "department"}
。为此,您需要单击 Rendered 属性域,并通过单击属性检查器工具栏中的数据库图标
单击 OK。 |
||||||||||
| 11. |
接下来,可以开发从表格了。主/从行为由托管 bean 处理。在组件选项板中,选择
PanelBox 组件,并将其拖放到
af:tree 组件的下方。
|
||||||||||
| 12. |
从组件选项板中,选择 Table 组件并将其放入 PanelBox。 |
||||||||||
| 13. |
单击 Next 跳过 Table 向导的欢迎页面,并在 Binding 对话框中输入下列值
单击 Next。 |
||||||||||
| 14. |
在第 2 步中,按如下顺序排序表格列: Ename、 Email、 Phone、 Hiredate、 Salary。 单击 Next。 |
||||||||||
| 15. |
在第 3 步中,单击 Next 保留默认设置。 |
||||||||||
| 16. |
在第 4 步中,设置
Include Range Navigation 选项,并将
Row 属性设为
5。
单击 Finish 关闭对话框。 |
||||||||||
| 17. |
在 Structure 窗口中,选择 af:table 组件并打开属性检查器。 |
||||||||||
| 18. |
选择
Binding 属性并按
单击 OK。 |
||||||||||
| 19. |
右键单击 Applications Navigator 中的 Tree.jspx 节点,并从上下文中选择 Run 选项。 |
||||||||||
| 20. |
展开 Root 节点,然后展开嵌入的节点,以测试树行为。 |
在本教程中,您使用了一些由 Oracle ADF Faces 提供的最复杂的用户界面组件以及开源 Trinidad 组件,例如:
| |
部分页面呈现 |
| |
ADF Faces 对话框框架 |
| |
单选和多选表格 |
| |
树组件 |
热门下载 | ||
更多融合中间件下载 | ||