在本教程中,您创建一个页面流图,然后创建 Web 页面以显示在预先构建的应用程序中为您创建的业务组件。要了解这些业务组件的创建方式,可以参考 使用 ADF 业务组件开发业务服务 OBE。
本教程还涉及链接到页面来完成页面导航,并且还包括对用户界面进行增强。
所需时间
大约 45 分钟
本教程包括下列主题:
概述 | |
情景 | |
前提条件 | |
创建可视化页面流 | |
构建一个数据绑定的 Web 页面以便浏览 | |
将 Delete、Commit 和 Rollback 按钮添加到页面 | |
构建一个数据绑定的 Web 页面以便编辑数据 | |
构建一个主/从 Web 页面 | |
实现页面流 | |
添加单选按钮组 | |
添加复选框 | |
添加下拉列表 | |
添加 Create、Commit 和 Rollback 按钮 | |
启用返回导航 | |
使域不可编辑 | |
总结 |
将鼠标置于此图标上以加载和查看本教程的所有屏幕截图。(警告:此操作会同时加载所有屏幕截图,网速较慢时,响应时间可能会比较长。)
注:您还可以在下面的步骤中将光标放在每个单独的图标上,仅加载和查看与该步骤相关的屏幕截图。
对应于在前面的教程( 使用 ADF 业务组件开发业务服务)中构建的内容,您在其中构建了业务组件模型并实现了验证和业务规则,您现在要构建应用程序页面流。开始构建页面时,要知道在过程中您可能要一直对页面作出调整。本教程指导您完成页面的创建,然后您分别运行和测试每个页面。
定义页面流时,您定义指定可以从特定页访问的页面的命名导航示例。实现该页面流的方法是 将操作添加到与页面流中的导航示例同名的页面。导航示例在该名称事件在页面上发生时通知应用程序导航到何处。还可以添加此功能来创建和编辑客户,以及提交或回滚客户数据。还可通过将一些文本输入域更改为复选框、单选按钮和下拉列表,来增强用户界面。
从您手绘的页面图开始,创建应用程序的页面流。您知道客户端要查看几个页面,因此决定构建一些用于查询客户表、编辑客户详细信息以及查询客户订单的页面。
当您构建的页面基本功能就绪后,就可以集中精力使之成为用户更满意的界面。添加一些额外功能来提交和回滚数据。此外,添加一些 GUI 控件可使数据项任务更为简单。而且,您希望所有示例的 CustomerID 域都是不可 编辑的(除非正在添加一个新客户),因为 CustomerID 是客户数据的关键字,对现有客户不应该更改。
开始本教程之前,您应该:
1. |
可以访问或已经安装了 Oracle JDeveloper (10.1.3.1.0)。可以从 Oracle 技术网下载它。 |
2. |
单击 这里将预先构建的 OrderEntry 应用程序以 zip 文件格式下载到您的系统上。 |
3. |
将 OrderEntry.zip 文件解压缩到 ( /jdev/mywork/ ) 目录中。 |
4. |
可以访问或已经安装了 Oracle 数据库 10g 随附的 Oracle 示例模式。 本教程使用 OE 模式。具体来说,页面使用了 EMPLOYEES 表。 可以在线获取有关在 JDeveloper 中安装 OE 模式并创建到其的连接的指导: http://www.oracle.com/technology/obe/obe1013jdev/common/OBEConnection.htm |
5. |
启动 JDeveloper。双击 JDeveloper 可执行文件 jdeveloper.exe ,该文件位于您解压缩它的根目录 ( <jdev_home> ) 中。
如果 Migrate User Settings 对话框打开,请单击 NO。 关闭 Tip of the Day 窗口。 |
6. |
现在应显示 JDeveloper IDE。
|
7. |
在 JDeveloper 中,选择 File | Open。在 Open 对话框中,选择 ( <jdev_home>/jdev/mywork/OrderEntry ) 目录中的文件 OrderEntry.jws,然后单击 Open。
|
开始开发应用程序时,对于用户需要看到的屏幕以及屏幕间的导航方式,您自己可能有一定的计划。您可以将这些想法绘制成一个粗略的框架,类似下图:
.
JDeveloper 提供了一个可视化工具来绘制应用程序的页面流。可视化工具提供了比简单的绘图多得多的功能,这是因为在这种可视化工具的背后有一个很复杂的过程。不过,当前您将用它来获得您计划构建的应用程序的一个总体情况。
要创建计划的应用程序的一个页面流图,请执行以下步骤:
1. |
在 Applications Navigator 中,右键单击 ViewController 项目,然后从上下文菜单选择 Open JSF Navigation。这会打开 Web Content | Web INF 节点中的 faces-config.xml 文件。
将在编辑器中打开页面流图。 |
2. |
在可视化页面流编辑器右边的 Component Palette 中,确保从顶部的下拉列表中选择了 JSF Navigation Diagram。如果 Component Palette 没有出现,请选择 View | Component Palette。 单击 JSF Page,然后单击图。键入新页面的名称: browseCustomers。(您只需键入 browseCustomers;系统为您添加“ /”和扩展名 .jsp。)
注意,/browseCustomers 的页面图标显示了一个黄色警告,因为还没有为其构建相应的页面。 |
3. |
在图上创建另外两个页面 /editCustomers 和 /browseCustomerOrders:
您将注意到这两个页面的文件扩展名是 .jsp。 |
4. |
接下来,在页面间创建 JSF 导航示例。这些示例的重要性稍后将显现;目前您可以将它们看作应用程序流的指示器。 要添加导航,单击 Component Palette 中的 JSF Navigation Case,然后单击源 browseCustomers,然后单击目的地 browseCustomerOrders。您还可以选择任意中间点,线条将弯曲串联起它们。
|
5. |
要修改导航属性,选择您刚创建的 JSF Navigation Case,然后使用 Property Palette 将 From Outcome 属性更改为 customerOrders。您将注意到图上的导航流名称更改为 customerOrders。
|
6. |
创建一个从 browseCustomerOrders 到 browseCustomers 的返回导航示例。再次更改导航流的名称。这次通过选择流名称 直接在图上编辑它。调用导航示例 browseCustomers。
|
7. |
现在在 browseCustomers 和 editCustomers 页面之间创建三个 JSF 导航示例,第一个从 browseCustomers 到 editCustomers,将 From Outcome 属性设置为 editCustomers。 从 editCustomers 到 browseCustomers 创建接下来两个示例,分别将 From Outcome 属性设置为 cancel 和 commit。
设置该属性的另一种方法是双击该流,调用此话框并编辑 From Outcome 属性。 |
8. |
单击 Save All ,或选择 File | Save All 来保存您的工作。 |
在本部分教程中,您要添加各种页面,随后将这些页面绑定到数据。
首先,构建用于查询数据库表中数据的 Web 页面。要构建一个用于浏览的数据绑定 Web 页面,执行以下步骤:
1. |
在页面流图中,双击 /browseCustomers 数据页。(该页尚不存在。)
|
2. |
Create JSF JSP 向导打开;如果您看到 Welcome 屏幕,单击 Next。
|
3. |
在向导的 JSP File 页面中,接受建议的页面名 browseCustomers.jsp。单击 Next 接受页面其他选项的默认设置。
|
4. |
在向导的 Component Binding 页面中,单击 Next 接受默认值。
|
5. |
在向导的 Tag Libraries 页面中,确保 Selected Libraries 列表中包括 ADF Faces 库。如果 ADF 库不在 Selected Libraries 列表中,则在 Available Libraries 列表中选择它们,然后单击 Add 将其移动到 Selected Libraries 列表。 单击 Next。
|
6. |
接受 HTML Options 页面上的默认值,单击 Next。
|
7. |
单击 Finish 创建该页面,在可视化编辑器中调用一个空白的 JSP。
|
8. |
使用 JDeveloper 和 Oracle ADF,可以轻松地向页面中添加支持数据的组件。两个选项卡应显示在空白页右侧。Components 选项卡显示所有非数据绑定组件,而 Data Controls 选项卡显示所有 ADF 数据绑定组件。 切换到 Data Controls 选项卡。(如果该面板没有出现,请从主菜单栏中选择 View | Data Control Palette。) 可以查看 Data Control Palette 中显示的应用程序模块。展开 CustomerOrdersBusinessServicesDataControl。展开 CustomersView1 节点。注意,所显示的项是在构建视图对象时选择的那些项。
|
9. |
选择 CustomersView1 并将它拖动到该页面中。将显示一个包括多个选项的菜单。选择 Tables | ADF Read-only Table。
|
10. |
在 Edit Table Columns 对话框中,选中 Enable Selection 和 Enable Sorting。(不要关闭编辑器)
|
11. |
尽管您需要编辑页面包括所有列,但您要创建浏览和查询页面,因此不必在此页面上显示此视图对象中的所有列。 按住 Shift 键并单击(或按住 Ctrl 键并单击选择单个列)选择除 CustomerId、CustFirstName、CustLastName 和 CustEmail 之外的列,然后单击 Delete。
单击 OK。 |
12. |
要测试生成的页面,从 Applications Navigator 或页面本身运行它。在本例中,返回页面流图。注意, /browseCustomers 数据页面上已不再显示不完整警告(惊叹号图标)。 右键单击该图上的 /browseCustomers 页面,然后从上下文菜单中选择 Run 以启动运行页面的内部服务器。
|
13. |
该只读 Web 页面在浏览器中运行并查询 Customers 表。注意,标签是您在前一个教程中为实体对象和视图对象指定的标签,排序顺序由该教程中为视图对象设置的 ORDER BY 子句实现。
|
14. |
可通过单击列标签对记录进行重排序。显示一个图标指示哪个列正在驱动排序以及是升序还是降序。确保您可以导航到最后一个记录并再次返回。完成后关闭浏览器。
|
15. |
如果您有时间,看一下创建页面之后发生了什么。返回 JDeveloper,在 Applications Navigator 中展开 ViewController | Application Sources。有许多程序包可用。 展开 view.pageDefs,然后选择 browseCustomersPageDef.xml。 在下面的 Structure 窗口中,选择 executables | CustomersView1Iterator。该行迭代器将当前行发送到单个控件绑定以显示当前数据。迭代器绑定可以指定在 Web 页面中显示的行数。注意,如果选择 CustomersView1Iterator 并查看 Property Inspector,可以看到为 RangeSize 设置的值返回的记录数。 现在展开 bindings | CustomersView1。此处您将看到您创建的 View Object 中的列的所有属性名。从 Data Control Palette 拖东项时,将在此处添加数据绑定。
|
大多数应用程序都要求在永久删除行之前由用户对删除操作进行确认。在本教程中,您没有时间创建单独页面。您只需将 delete、commit 和 rollback 按钮添加到此页面。
要将 operations 按钮添加到该页面,执行以下步骤:
1. |
返回 browseCustomers 页面的可视化编辑器。展开 Data Controls 面板中的 CustomersView1 节点。展开 OrdersView2 下面的 Operations。
|
2. |
找到 Delete 操作并将其拖动到 submit 按钮附近的页面上。从出现的上下文菜单中选择 ADF Command Button。
|
3. |
在 Data Controls Palette 中,折叠 CustomersView1 节点。有一个与 CustomersView1 同级别的 Operations 节点。展开此节点以公开 Commit 和 Rollback 操作。将每个操作拖到此页面上(Delete 按钮旁边),在每个示例中创建一个 ADF Command Button。
|
4. |
按照您在前面做的那样,运行该页面测试更改。 选择一条记录并删除它。回滚此更改。 在下一个教程中,您将创建新记录。
完成操作后关闭此浏览器。 |
5. | 单击 Save All 保存您的工作。 |
您刚创建的页面只允许浏览和删除客户。在本部分中,您将创建一个允许创建新记录或更新现有记录的 Web 页面。 要构建一个用于更新客户的 Web 页面,执行以下步骤:
1. |
创建一个与页面流图中的 editCustomers 图标相对应的 JSP。 创建此 JSP 与为 browseCustomers 页面创建 JSP 的过程完全相同: 调用页面流图 (faces-config.xml) 并双击 /editCustomers 图标。 接受 editCustomer.jsp 作为页面名称。 接受向导提供的其他所有默认设置。
|
2. |
单击 Data Control Palette。 展开 CustomerOrdersBusinessServicesDataControl,选择 CustomersView1 并 将其拖到该页面。从上下文菜单中选择 Forms | ADF Form。
|
3. |
选中 Include Submit Button 并单击 OK 接受所有表单域。
|
4. |
注意,该页面的布局与您创建的前一个页面有很大不同。您会看到同一数据控件可以多种方式显示。
|
5. |
下一部分中,您将添加导航并增强页面 UI,然后将彻底测试该页面。在此期间,运行该页面以确保其正常工作。 要运行该页面,执行测试 browseCustomers 页面时执行的步骤,方法是选择 editCustomers 页面,右键单击并从上下文菜单中选择 Run。 完成操作后关闭此浏览器。
|
基于您构建业务模型的方式,此应用程序模块将负责主/从协调。
您可能记得在使用向导创建视图对象时,您包括了成为视图对象间视图链接的外键关联。在构建应用程序模块时,您通过视图链接将每个视图对象置于数据模型中,以作为前一个视图对象的子级。换言之,应用程序模块中的 Orders 视图对象是 Customers 的子级。这意味着只显示所选客户的订单。同样,此应用程序模块中的 OrderItems 视图对象是 Orders 的子级,因此只显示选定订单的订单项。
由于此应用程序模块执行主/从协调,因此构建主/从 Web 页面不需要特殊对象。要构建一个为客户显示关联订单的 Web 页面,执行以下步骤:
1. |
创建一个对应于页面流关系图上 browseCustomerOrders 图标的 JSP。 方法与对 browseCustomers 页的方法相同: 调用页面流关系图 (faces-config.xml) 并双击 /browseCustomerOrders 图标。 接受 /browseCustomerOrders.jsp 作为页面名称。 接受向导提供的其他所有默认设置。
|
2. |
在 Data Control Palette 中,展开 CustomerOrdersBusinessServicesDataControl、 CustomersView1 和 OrdersView2。 选择 OrderItemsView1 并将它拖动到该页面中。从上下文菜单中选择 Master-Details | ADF Master Form, Detail Table。
|
3. |
在该步骤中,将这两个部分的标题分别更改为 Orders 和 Order Items。 使用 Property Inspector,选择文本属性 OrdersView2 并用 Orders 替换该文本。对于详细记录,将标题从 OrderItemsView1 更改为 Order Items。注意,可视化编辑器中的文本进行了更新。 注:如果您无法为文本属性轻松选择 Property Inspector,转至 Structure 窗口,为每个标题选择 af:panelHeader。然后,可以在 Property Inspector 中选择和更改文本属性。
|
4. |
在主部分 (Orders) 中,不需要显示所有列。 删除 SalesRepId。
确保您从该页面删除了标签和数据。当您选择 SalesRepId 列时,查看 Structure 窗口中的链接,您应该选择了 af:inputText。可以从编辑器或 Structure 窗口(哪个容易就选哪个)删除项。 |
5. |
有一些列需要显示在该页面的细节部分中。联接语法需要它们,因此不要删除它们。 在 Order Items 细节部分中,选择 OrderId,使用 Property Inspector 将 Rendered 属性设置为 False。
和本教程前面介绍的一样,要选择整列而不仅仅是列标题。可通过在 Structure 窗口中注意此选择来进行验证。 |
6. |
对于 Orders Items 中的两个 ProductId 实例,将每个示例中的属性 Rendered 设置为 False。页面现在应该如下面的屏幕截图所示。
|
7. |
如果有时间,将 ProductName 列移到 LineItemId 旁边。 选择 ProductName 列。注意,该操作在 Structure 窗口中突出显示该列。使用 Structure 窗口将 ProductName 列向上拖到 LineItemId 列下方。
|
8. |
运行该页面对其进行测试,就像您在前面测试其他页面一样;右键单击 browseCustomerOrders 页面并从上下文菜单中选择 Run。
如果您只看到了标签,是因为您正在显示没有订单的客户。 如果发生该情况,可以针对特定 CustomerId 运行此页面。为此,返回 OrderEntry | Model 项目中的 CustomersView。在 model.queries 程序包中双击 CustomersView 调用 Properties 对话框。将 Customers.CUSTOMER_ID = 102 添加到 SQL 语句的 Where 子句。当您在下一个教程中从 browseCustomers 页面调用 browseCustomerOrders 时,这不是必需的。测试完页面后,一定要删除限制。 完成操作后关闭此浏览器。 |
9. | 单击 Save All 保存您的工作。 |
在该应用程序中,browseCustomers 页面作为用户的起点,用户从该页面选择要编辑的行。editCustomers 页面用于编辑和插入行。
在本教程的这一部分中,您向 browseCustomers 页面添加按钮,这些按钮引发与您在页面流图中创建的导航示例对应的事件。
添加编辑操作启动新页面 | |
添加 Show Orders 按钮启动主从页面 |
要将编辑操作添加到 Edit 按钮,执行以下步骤:
1. |
在可视编辑器中打开 browseCustomers,选择 Submit 按钮。 使用 Property Inspector,输入 Edit Customers 作为 Text 属性的值。选择 Action 属性, 然后使用下拉列表选择 editCustomers。
注:只需在该域中键入 Action 属性值,然而需要注意的是,Action 属性中的文本必须与 faces-config.xml 文件中的导航示例的 From Outcome 属性匹配。
|
2. |
测试此页,方法是选择 browseCustomers,右键单击并从上下文菜单中选择 Run。
|
3. |
在浏览器中,使用单选按钮组选择一个客户,然后单击 Edit Customers。
|
4. |
注意,新页面已经返回您在 browseCustomers 页面上选择的 CustomerId。
完成操作后关闭此浏览器。 |
现在在此页面上添加 Show Orders 按钮调用 browseCustomerOrders 页面,显示所选客户的订单。要添加带有导航属性的按钮,执行以下步骤:
1. |
确保在可视编辑器中打开了 browseCustomers 页面。切换到 Component Palette 选项卡,然后从下拉列表中选择 ADF Faces Core。(如果 Component Palette 没有出现,请选择 View | Component Palette。)
|
2. |
选择 CommandButton 并将其拖到该页面上 Delete 按钮旁边。
|
3. |
选择您刚创建的按钮。 在 Property Inspector 中,将 Text 属性设置为 Show Orders。选择 Action 属性,然后使用下拉列表选择 customerOrders。和以前一样,Action 属性的文本必须与您在页面流图中为导航控件输入的文本匹配。
单击 Save All ,或选择 File | Save All 来保存您的工作。 |
4. |
运行 browseCustomers 页面测试更改。 找到并选择 CustomerId 101(记住,可以单击列标题对 CustomerId 重新排序) 单击 Show Orders。
完成操作后关闭此浏览器。 |
单选按钮组将用户限制到一组有限的可输入域中的值,防止任何数据错误。editCustomers 页面中的 Gender 域只接受值 M 和 F,因此是转换为单选按钮组的理想候选。
要将 MaritalStatus 域更改为单选按钮组,执行以下步骤:
1. |
在可视化编辑器中打开 editCustomers 页面。
|
2. |
在可视化编辑器中选择 Gender 域。右键单击并选择 Delete。 该操作删除了 Gender 的文本域。
|
3. |
您在可视化页面编辑器中选择的每个项的快速提示也在 Structure 窗口中选择。在可视化页面编辑器中选择 DateOfBirth;这将在 Structure 窗口中突出显示它。 返回 Data Control Palette,展开 CustomersView1。 选择 Gender,将其拖到 Structure 窗口上并放在 DateOfBirth 下方。系统提示后,从上下文菜单中选择 Single Selections | ADF Select One Radio。
|
4. |
这将打开 List Binding Editor。选择 Fixed List 选项。
|
5. |
选择 Gender 作为 Base Data Source Attribute。 在 Set of Values 下的不同行分别输入 M 和 F。从 "No Selection" Item 下拉列表中选择 Selection Required。 单击 OK。
|
6. |
editCustomers 页面现在包括一个单选按钮图标。
|
7. |
运行 editCustomers 页面对其进行测试。您会看到 Gender 显示为一个单选按钮组。
完成操作后关闭此浏览器。 |
复选框将用户限制为一个简单的布尔选择。editCustomers 页面中的 MaritalStatus 域指示已婚或未婚(单身)的布尔状态,因此是转换为复选框的理想候选。
要将 MaritalStatus 域更改为复选框,执行以下步骤:
1. |
返回到可视化编辑器中的 editCustomers 页面。 在可视化编辑器中选择 MaritalStatus 域。右键单击并选择 Delete。
|
2. |
在 Data Control Palette 中,展开 CustomersView1。选择 MaritalStatus,将其拖到 Structure 窗口上并放在 Gender 单选项下方。系统提示后,从上下文菜单中选择 Single Selections | ADF Select Boolean Checkbox。
|
3. |
这将打开 Boolean Binding Editor。
|
4. |
对于 Data Collection,确保选择了 CustomersView1 并为 Attribute 选择了 MaritalStatus。 对于所选的 State Value 和 Unselected State Value,分别添加 married 和 single,然后单击 OK。
单击 Save All ,或选择 File | Save All 来保存您的工作。 |
5. |
运行 editCustomers 页面对其进行测试,并注意所选客户的 Marital Status。
完成操作后关闭此浏览器。 |
当用户有一些可供选择的可能值时,下拉列表很有用。以 IncomeLevel 为例,有一组定义的可能值。由于键入这些值很麻烦,因此从值下拉列表中选择或更新是个理想的选择。在本例中,您根据硬编码值创建列表。
要将 IncomeLevel 域更改为下拉列表,执行以下步骤:
1. |
返回到可视化编辑器中的 editCustomers 页面。在可视化编辑器中删除 IncomeLevel 域,正如您对前两个域的操作一样。 在 Data Control Palette 中选择 并展开 CustomersView1,选择 IncomeLevel 并将其拖到 Structure 窗口上。将其放到 MaritalStatus 后,并在系统提示时选择 Single Selections | ADF Select One Choice。
|
2. |
这将调用 List Binding Editor。选择 Fixed List。
|
3. |
选择 IncomeLevel 作为 Base Data Source Attribute。 从 "No Selection" Item 下拉列表中选择 Selection Required。 对于 Set of Values,在不同的行输入以下内容:
单击 OK。
注:如果您联机使用这些注释,使用 Copy 和 Paste 即可使用上述列表。 |
4. |
运行 editCustomers 页面测试该应用程序。您会看到 IncomeLevel 显示为下拉列表。
完成操作后关闭此浏览器。 |
创建 editCustomers 页面之后,您未创建任何默认按钮。在这部分练习中,现在您将添加其他按钮以增强页面功能,尤其是 Create 按钮。为了完整起见,您按照在前面部分的做法添加 Commit 和 Rollback 按钮。
要将 Create 按钮添加到该页面,执行以下步骤:
1. |
返回到可视化编辑器中的 editCustomers 页面。 在 Data Control Palette 中,选择并展开 CustomersView1。展开 Operations 节点(显示为 CustomerView1 的子级)。选择 Create 操作。
|
2. |
将 Create 操作拖到该页面上的 Submit 按钮前面。系统提示时,从上下文菜单中选择 ADF Command Button。
|
3. |
返回 Data Control Palette,折叠 CustomersView1 并展开 Operations 节点(与 CustomersView1 出现在同一级别)。
|
4. |
选择 Commit 并将其拖到此页面上的 Submit 按钮后面。系统提示时,从上下文菜单中选择 ADF Command Button。
|
5. |
对于 Rollback 按钮重复此步骤,将其放在 Commit 按钮后面。
单击 Save All 保存您的工作。 |
6. |
您的用户比起“Submit”来更喜欢“Apply Changes”,因此更改 Submit 按钮的文本。为此,选择 Submit 按钮,并在 Property Inspector 中将 Text 属性更改为 Apply Changes。
|
7. |
运行 editCustomers 页面测试该应用程序。 更改一个员工的名称,然后单击 Rollback 撤销更改。 创建新用户,单击 Apply Changes 将更改提交到数据库。单击 Commit 在数据库中更新此记录。
完成操作后关闭此浏览器。 |
现在已通过添加新控件和按钮增强了 editCustomers 页面。用户使用完此屏幕后,您希望他们能导航回到 browseCustomers 页面。这可以通过添加 Cancel 按钮或者将导航操作添加到 Commit 按钮来完成,这样它提交然后导航回来。
要启用导航回到 browseCustomers 页面,执行以下步骤:
1. |
从本教程的前几部分,您可能会想起一个按钮的 Action 属性必须与页面流中导航示例的文本匹配。 打开 faces-config.xml 文件 — 页面流图。(右键单击 ViewController,然后从上下文菜单中选择 Open JSF Navigation。 ) 验证您有从 editCustomer 页面到 browseCustomers 页面的 cancel 和 commit 导航流。
|
|
2. |
返回到可视化编辑器中的 editCustomers 页面。在 Component Palette 中,确保在下拉列表中选择 ADF Faces Core。
|
|
3. |
选择 Command Button 并将其拖到该页面上 Rollback 按钮旁边。
|
|
4. |
确保选择了新按钮。在 Property Inspector 中,输入 Cancel 作为 Text 属性的值。 选择 Action 属性并从下拉列表中选择 cancel。
|
|
5. |
在可视化编辑器中选择 Commit (Apply Changes) 按钮,并验证 Property Inspector 中的 Action 属性的值与您的导航流匹配。下拉列表中的值是来自导航流的值。要提交此数据并返回到 browseCustomers 页面,您必须选择流值。
|
|
6. |
从该页面流图运行 browseCustomers 页面以测试该应用程序。 选择一个客户并单击 Edit Customers。更改员工名称并单击 Cancel。返回 customers 页面,没有进行任何更改。 再次编辑客户,这次单击 Apply Changes,然后单击 Commit。提交数据,控制返回到 customers 页面。
|
您可能已经注意到,当编辑客户时,CustomerID 是可编辑的。一般来说,您只希望该域对新记录是可编辑的。这可在我们应用程序的模型中设置,用户界面将自动反映它。
要使 CustomerID 仅对新记录可编辑,执行以下步骤:
1. |
在您一直使用的 OrderEntry 应用程序中,展开 Model 项目就会看到实体对象。
|
2. |
双击 Customers 实体对象显示 Entity Object Editor。
|
3. |
展开 Attributes 树,选择 CustomerId。
|
4. |
将 Updatable 域设置为 While New,单击 OK。
单击 Save All ,或选择 File | Save All 来保存您的工作。 |
5. |
运行 browseCustomers 页面测试该应用程序。 选择一个客户并单击 Edit Customers。 在 editCustomers 页面中,注意 CustomerID 域不可编辑。
|
6. |
单击 Create 添加新客户记录。注意 CustomerID 对新记录是可编辑的。
完成操作后关闭此浏览器。 |
在本教程中,您在应用程序中构建了一些 Web 页面,并向其中添加了支持数据的组件。基于您在上一个教程中构建的数据模型,构建主/从 Web 页面变得很容易。但此时这些页面只具有有限的功能。
然后,您增强了用户界面。您 学会了如何将操作链接到导航事件以及如何使用控件(如复选框、单选按钮组和下拉列表)增强用户界面。
您现在还完成了允许您编辑、更新和向数据库提交更改的小型 Web 应用程序的构建。您还可以在页面间轻松导航,为所选的特定记录传递参数。
将鼠标置于该图标上可以隐藏所有的屏幕截图。
热门下载 | ||
更多融合中间件下载 | ||