本文介绍如何使用Oracle应用开发框架ADF(Application Development Framework)来创建包含简单的增删改查功能的Web应用。
本文目的
帮助ADF的学习者在学习ADF基本知识后进行ADF实践,顺利完成ADF开发的入门,同时通过该实验更深入了解ADF的相关概念。
本文不涉及
本文不涉及ADF的基本概念和模型的讲解。关于ADF详细内容可参考Oracle官网上的ADF开发者指南:http://docs.oracle.com/cd/E21764_01/web.1111/b31974/toc.htm
本文的阅读对象
ADF入门学习人员(对ADF开发框架有初步的认知)或想了解ADF开发流程的技术爱好者。
开发环境
1. 安装JDeveloper。 JDevloper安装介质下载地址:http://www.oracle.com/technetwork/developer-tools/jdev/downloads/index.html
2. 数据库。
本实验是对数据库单表进行CRUD,表名:Country,创建脚本:
CREATE TABLE COUNTRIES
( COUNTRY_ID CHAR(2) NOT NULL ,
COUNTRY_NAME VARCHAR2(40),
REGION_ID NUMBER,
CONSTRAINT "COUNTRY_C_ID_PK" PRIMARY KEY ("COUNTRY_ID") ENABLE
)
实验步骤
创建ADF Web Applicaton
打开JDeveloper,File -> New -> Application ->Fusion Web Application
Application Name: HelloWorldApp
单击Finish,生成包含Model和ViewController两个project的application。
创建业务组件(Business Component)
右键单击Model工程,New->ADF Business Components -> Business Components from Tables
单击Ok,弹出设置数据库连接的对话框;
单击“+”按钮创建新的连接。Connection Name栏设置连接名称:myConn,并设置目标数据库的连接信息,测试连接成功后单击“OK”;
此时Connection中就出现了刚创建的myConn连接,单击“OK”进入Business Component创建窗口;
设置Entity Objects
package: model.entities
单击Query按钮查询出数据库中的表,将COUNTRIES表移到Selected框中
单击Next,设置view objects;
package:model.queries
将CountriesView移到Selected框中
单击“Next”,忽略Read-Only View Objects的设置;单击“Next”,进入Application Module设置界面,修改package: model.services ;
单击Finish,完成Business Componets创建。
设置查询条件
由于在查询页面中需要根据Country Id来对Country表进行查询,因此我们需要在Country视图中定义一个根据Country Id查询的Criteria。
双击Model工程下的CountryView,单击Query标签,进入Country视图的查询定义界面;
点击“View Criteria”后的“+”按钮创建Criteria
单击“Add Item”
Attribute:CountryId
Operator:Equals
Operand:Bind Variable
单击Parameter后面的“+”按钮,创建绑定的变量
Name:varCountryId
Type:String
单击OK,回到Create Criteria界面,单击OK完成CountriesViewByCountryId Criteria的创建。
设置AppModule中的Data Model
双击Model工程中的AppModule文件,选择“Data Model”标签;
单击选中Data Model框中的CountryView1,点击Data Model后的“Edit”按钮,在弹出的编辑界面中将CountriesViewByCountyId Criteria移到Selected框中。
单击Ok,保存,完成Country查询的定义。
创建Web视图
创建countries list页面
右键单击ViewController工程,New -> JSF -> JSF Page
File Name: listPage.jspx
勾选中“Create as XML Document (*.jspx)”
单击OK,进入listPage页面。
将Component Palette窗口中的“Panel Collection”组件拖拽到listPage中
点击Data Controls窗口的刷新按钮,显示出刚创建的AppModuleDataControl
将ContriesView1拖拽到listPage页面中“Panel Collection”中,选择Table -> ADF Read Only Table
在弹出的Edit Table Columns窗口中选择“Single Row",单击OK生成Country列表。
此时可右键点击listPage.jspx,单击“Run”,运行该页面,页面将显示country的所有记录的列表。
创建countries 的查询panel
在Data Controls窗口中将CountriesView1->Operations->ExecuteWithParas拖拽到listPage页面下Panel Collection组件的左方,选择“ADF Parameter Form”,在“Display Label”中输入Country Id,单击OK
在生成的Panel中单击“ExecuteWithParams”按钮,在属性窗口中将Text属性修改为Search
再次右键listPage.jspx -> Run 运行该页面验证查询功能。
创建编辑页面
安装listPage页面的方式创建一个新页面:editPage.jspx
将Data Controls中的AppModuleDataCountrol/CountriesView1拖拽到editPage页面,选择Form -> ADF Form
单击OK,完成Form的创建;
拖拽两个Button组件到Form下方,将Text属性分别修改为Cancel和Save
保存页面
创建Page Flow
双击打开ViewController工程下Web Content/Page Flows/adfc-config
将页面listPage.jspx和editPage.jspx拖拽到空白处,分别生成listPage和editPage两个图标;
将Data Controls窗口下AppModuleDataControl/CountriesView1/Operations/CreateInsert拖到空白处,生成一个CreateInsert图标;
将Data Controls窗口下AppModuleDataControl/Operations/Commit拖到空白处,生成一个Commit图标;
将Data Controls窗口下AppModuleDataControl/Operations/Executet拖到空白处,生成一个Execute图标;
单击Component Palette中Control Flow Case的箭头组件,使其由listPage图标指向CreateInsert图标,并修改Form Outcome:new
重复创建以下的Control Flow Case
From | To | Outcome |
createInsert | editPage | |
listPage | editPage | edit |
editPage | Commit | save |
editPage | Execute | cancel |
Commit | listPage | Commit [默认] |
Execute | listPage | Execute [默认] |
listPage | Commit | delete |
listPage添加新增、修改、删除按钮
打开listPage页面,将Component Palette窗口中的Toolbar组件拖到panel Collection中toolbar区域;
拖拽两个Toolbar Button组件拖到Toolbar中,分别命名为New和Edit,将New按钮属性中的Action值修改为new,将Edit按钮的修改为edit;
将Data Controls窗口下AppModuleDataControl/Operations/Delete拖到Toolbar中,将其属性中的Action值修改为delete
修改editPage按钮导航
将Cancel按钮属性中的Action值修改为cancel
将Save按钮属性中的Action值修改为save
至此对Countries表的CRUD功能就完成了。
运行
右键listPage.jspx -> Run 。