利用 JDeveloper 介绍 ADF Faces/Trinidad

目的

本教程将向 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 并单击  按钮将其移到 Expression 窗格中,然后单击 OK

关闭表达式语言生成器会创建以下绑定字符串: #{dialogbean.stateSelectItems}。当然,如果您不需要声明式编辑器,可以在值域中直接键入字符串。

Common Properties 选项卡上,输入 State 作为 Label 值,并输入 #{userbean.state} 作为 Value。这将确保把从列表中选择的值写入用户 bean,该 bean 表示该项目的模型。

选择 Advanced Properties 选项卡,然后选择 Bindings 属性并按  按钮启动绑定对话框。在对话框中,选择 Managed Bean 部分中的 dialogbean 项。
在 Property 域中, 选择 OneChoice1,然后选择 OK 返回 Advanced Properties 选项卡。

5.

还是在 Advanced Properties 选项卡中,设置以下属性

属性
AutoSubmit true
Id selectOneChoice1
Immediate true

单击 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 属性并按  按钮打开 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 对话框框架

通过 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,并设置下列属性:

Label Zipcode
Value #{userbean.zipcode}
Required false

6.

要创建一个重置和提交按钮,将 PanelGroup 组件从组件选项板拖放到 PanelFormfooter facet 中。

7.

通过组件选项板,在 panelGroup 中添加一个 ResetButton 和一个 CommandButton 组件。在属性检查器中,将重置按钮的 Text 属性设置为 Reset,将提交按钮的 Text 属性设置为 Submit

8.

选择 Submit 按钮,并在属性检查器中选择 Action 属性。按  按钮,并选择 dialogbean 作为 Managed Bean 属性的值。在 Method 选择框中选择 submitDialogAction

单击 OK

返回列表

构建针对对话窗口的调用

在这一部分中,您将在 Main 页面中创建一个调用 Dialog 页面的 Action。然后,通过运行 Main.jspx 页面,您可以尝试利用外观特性更改应用程序的外观。

1.

通过在 Applications Navigator 或 faces-config.xml 可视化编辑器中双击文件项,打开 Main.jspx 文件。

2.

选择 Create Customer 按钮,打开属性检查器并设置以下属性:

属性 注释
Action dialog:open 启动导航,显示对话框
PartialSubmit true 按下按钮时避免页面重载
ID createUserButton 稍后,将使用此 ID 名称通过部分页面呈现功能来刷新页面
UseWindow true 在新窗口中打开对话框

选择 ReturnListener 属性并按  按钮。在 Managed Bean 列表中选择 dialogbean,在 Method 域中选择 returnFromProcess

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 并单击  按钮将其移到 Expression 窗格。

单击 OK

4.

Var 域的值设置为 row

Data Type Hint 域的 Browse 按钮,并键入 Customer。从列表中选择 oracle.adffaces.handson.model 程序包的 CustomerBean 类。

单击 OK


Data Type Hint 域应显示 oracle.adffaces.handson.model.CustomerBean。向导在确定下一个向导页上显示的表格列时需要此提示。

单击 Next

5.

在表向导的第 2 步中,删除名为 Selected 的列,并将列进行排序,以便它们按以下顺序显示: Full NameAddressPhoneEmailCompany

单击 Next

6.

在向导的第 3 步中,将列标记为可排序。排序是 ADF Faces 表格组件集成的一个特性。选择每一列并提供以下值

可排序? 排序属性 格式类型
Full Name 选中 fullname icon
Address 选中 address icon
Phone 选中 phone icon
Email 选中 email icon
Company 选中 company icon

单击 Next

7.

在向导的第 4 步中,定义以下值:

属性 注释
Include Range Navigation 5 输入一个数字,表示针对每次请求在表中显示的行数。如果返回的行数超出了该数字,表就会显示活动的导航链接,以便用户检索下一个或前一个行集合。如果已知总行数,表格就会显示让用户导航至特定行集合的链接。
Include Selection Column 选择“Single Selection” 选择该属性将在最左边插入一个列,该列允许用户通过选择控件 (selection facet) 选择一个行作为当前行。选择“Single Selection”使用单选按钮,该按钮只允许用户选择一个行。此操作将在选择控件中插入 af:tableSelectOne 标记。
Include Table Banding Rows 选择该属性将插入相互交替的背景颜色。此操作设置了 af:table 标记的分层属性。选择 Rows 表示交替行颜色。
Banding Interval 1

完成对话框以创建表格。

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 属性并按  按钮。在 ActionListener 对话框中,从下拉列表中选择 tablebean 作为 Managed Bean。在 Method 域中,选择 launchEditDialog 值。

单击 OK

15.

在属性检查器中,仍然选择命令按钮的 ReturnListener 属性,并按  按钮。在 Managed Bean 域中,选择 tablebean 项。选择 processReturnFromEdit 作为 Method。

单击 OK

16.

选择 Binding 属性并按  按钮。在 Managed Bean 域中,选择 tablebean 项。在 Property 域中,选择 commandButton1

单击 OK


17.

单击 Run 图标  ,在您的浏览器中启动 Table 页。

在 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.

在打开的对话框中,提供下列值

属性
Value #{treehandler.treemodel}
Var node
Node Stamp Component af:outputText
Node Stamp Value #{node.description}

单击 OK

4.

从组件选项板中,将 CommandLink 组件拖放到 af:outputText 组件旁边。此操作可在可视化编辑器或 Structure 窗口中完成。如果树节点是一个部门,则只显示命令链接。否则,会显示 outputComponent。通过树节点的 nodeType 属性,您可以确定节点的类型。

5.

打开属性检查器,并将 CommandLink 的 Text 属性设置为 #{node.description}

6.

Rendered 属性值设置为 #{node.nodeType == "department"} 。为此,您需要单击 Rendered 属性域,并通过单击属性检查器工具栏中的数据库图标  打开 ExpressionBuilder。在 Expression 域中,键入 EL #{node.nodeType == "department"}

单击 OK

7.

要连接命令链接与 JSF 活动,请选择 ActionListener 属性并按  按钮。

8.

选择 treehandler 作为 Managed Bean 属性。选择 treeNodeSelected 作为 Method。

单击 OK

9.

选择 af:outputText 组件并打开属性检查器。

10.

Rendered 属性值设置为 #{node.nodeType != "department"} 。为此,您需要单击 Rendered 属性域,并通过单击属性检查器工具栏中的数据库图标  打开 ExpressionBuilder。在 Expression 域中,键入 EL #{node.nodeType != "department"}。

单击 OK

11.

接下来,可以开发从表格了。主/从行为由托管 bean 处理。在组件选项板中,选择 PanelBox 组件,并将其拖放到 af:tree 组件的下方。

12.

从组件选项板中,选择 Table 组件并将其放入 PanelBox

13.

单击 Next 跳过 Table 向导的欢迎页面,并在 Binding 对话框中输入下列值

属性
Value #{treehandler.tableModel}
Var row
Data Type Hint oracle.adffaces.handson.model.EmployeeBean

单击 Next

14.

在第 2 步中,按如下顺序排序表格列: EnameEmailPhoneHiredateSalary

单击 Next

15.

在第 3 步中,单击 Next 保留默认设置。

16.

在第 4 步中,设置 Include Range Navigation 选项,并将 Row 属性设为 5

单击 Finish 关闭对话框。

17.

在 Structure 窗口中,选择 af:table 组件并打开属性检查器。


18.

选择 Binding 属性并按  按钮,然后在 Binding 对话框中,针对 Managed Bean 选择 treehandler 项,并在 Property 域中选择 detailTable

单击 OK

19.

右键单击 Applications Navigator 中的 Tree.jspx 节点,并从上下文中选择 Run 选项。

20.

展开 Root 节点,然后展开嵌入的节点,以测试树行为。

返回主题列表

总结

在本教程中,您使用了一些由 Oracle ADF Faces 提供的最复杂的用户界面组件以及开源 Trinidad 组件,例如:

部分页面呈现

ADF Faces 对话框框架

单选和多选表格

树组件

返回主题列表

 将鼠标置于该图标上可以隐藏所有的屏幕截图。

Left Curve
热门下载
Right Curve
Left Curve
更多融合中间件下载
Right Curve