科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道学习Oracle ADF 主从表单

学习Oracle ADF 主从表单

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在先前两篇文章里,我讨论了Oracle ADF的最简单的例子:创建用于单个表格的Model和ViewController对象。

作者:开发者在线 来源:开发者在线 2007年9月24日

关键字: Rex Baldazo ADF ORACLE

  • 评论
  • 分享微博
  • 分享邮件

在先前两篇文章里,我讨论了Oracle ADF的最简单的例子:创建用于单个表格的ModelViewController对象。当然,那确实是一个很基本的例子。那么更加常见的情况又是什么样的呢?比如如何为主从关系建模?为了弄清楚它的工作原理,我创建一些简单的表格。

首先,我创建了一个Dept表格,里面包括一个deptno(部门编号)主键。然后我建立了一个Emp表格来保存员工(信息),每一个员工都属于一个部门,并通过一个deptno外键回到Dept表格。

然后,我启动在第一篇文章里用到的那个ADF向导,分别创建Entity和View两个对象,各自代表一个表格。最后你获得了4个对象,主表格和从表格都有了个Entity对象和View对象。我的JDeveloper工程完成后看起来就像下面这样:

学习Oracle ADF 主从表单

你会注意到在Model的结尾还有一些名字非常奇怪的对象(在这篇文章里它们的名字是SysC004051Assoc和SysC004052Assoc)。我真的不知道这些是做什么用的,只不过当你右击并编辑它们的时候它们似乎是用来建立关系模型的。我这里有两个,因为我的Emp表格自己有一个外键——每个员工都有一个主管,每个主管自己同时也是一名员工。其他的关联(Association)对象会建立deptno外键关系,我们在本文里要参考这个关系。

下面的内容就真的是主从表单建模与单个表格不同的地方了:你必须创建一个叫做ViewLink的对象。右击“建模(Model)”目录,在弹出菜单中选择“新建(New)”。在“类别(Categories)”部分打开“业务层(Business Tier)”,点击“ADF业务组件(ADF Business Components)”。在右边的窗格里,你会看到所有的ADF向导——选择那个叫做“视图链接(View Link)”的向导,然后点击“确认(OK)”。

学习Oracle ADF 主从表单
在“视图链接”向导的第一步里,不要只接受默认的名字——起个言简意赅的名字,以便你以后能够很容易地在工程中找到它。我把我的命名为DeptEmpViewLink。
在向导的第二步里,你需要描述基数。在这篇文章里,它是一个一对多的关系。但是在向导中还有“0..1到*”的选项,这对于我来说似乎是一个更好的选择。假如在我的Dept表格里有一个部门,但是Emp表格里没有任何员工,这就是一个零对多的关系,因此我选择了后者。

在第二部的两个窗格里,你需要选择那些相关联的字段。我把两个表格里的deptno字段都选中了,然后点击“添加(Add)”小按钮:
学习Oracle ADF 主从表单
点击“下一步(Next)”进入向导的下一个画面。点击“测试(Test)”按钮以确保一切都工作正常。你应该会看到一个“查询正确(Query Is Valid)”对话框。这个时候,你可以点击“完成(Finish)”来接受剩下的默认值以创建视图链接对象。

现在回到“建模”目录,右击它,选择“新建”,创建一个“应用程序模块(Application Module)”(类似于我在本系列第一篇文章中做的)。当你随着向导向后继续的时候,你会看到出现两个基本对象,但是你还会看到它们其中的一个还附有一个子对象,用来表示主从关系。选择父对象,点击蓝色的大于号图标把它移到“数据模型(Data Model)”这一列。然后选择子对象把它移过去。它最终应该看起来像下面这样:
学习Oracle ADF 主从表单
点击“完成”接受剩下的默认设置就创建好了新的“模块(Module)”。右击这个新的模块,在弹出菜单上选择“测试”。通过这个测试来确保你的主从关系正常。你应该看到下面这样的画面:
学习Oracle ADF 主从表单
如果你浏览到主对象里的某个部门,然后点击从对象,这两者应该是连接在一起的。(它只会先是具有同一个部门编号的所有员工。)到目前为止,一切正常。现在我就要说明如何创建用户界面了。

打开工程里的ViewController目录,进入“Web内容(Web Content)”目录,然后进入里面的WEB-INF目录。双击faces-config.xml文件启动编辑器。将“JSF页面(JSF Page)”对象从“组件调色板(Component Palette)”拖到faces-config.xml关系图编辑器里。我把我的重新命名为了/index.jsp,但是你没有必要这样做。如果愿意的话,你现在只用接受默认的就行了。

双击新页面的图标启动“创建JSF JSP向导(Create JSF JSP Wizard)”。就像从前一样,当你到达向导的第三步的时候,你可能想要把所有的标记库都移到右边这一栏里。这样在处理页面的时候,你就可以使用它们了。到了这个时候,你可以点击“完成”来结束向导。

这是页面编辑器会出现,你先前创建的应用程序模块现在应该会在右边的“数据控件调色板(Data Control Palette)”里出现。打开应用程序模块,你会看到主视图对象。打开这个对象它会显示其中的独立字段,如果一切都正常的话,从视图对象也会以嵌入在主视图对象的下面的形式出现。

你会希望把从视图对象而不是主视图对象拖到JSP页面上。“创建(Create)”菜单会弹出来,选择“主从(Master Details)”,然后选中你希望的主从类型。我选择了“ADF主表单、从表单(ADF Master Form, Detail Form)”就得到了下面的画面:
学习Oracle ADF 主从表单
在运行这个新的表单之后,我看到了下面的画面:
学习Oracle ADF 主从表单
再强调一遍,有一些地方我还是没有弄清楚。因为我以为这些应该都是文本输入字段,换句话说,我应该能够加入一个“创建”或者“执行(Commit)”按钮将输入保存到数据输入表单里。

但是这只是一个显示表单。我可以在主从表单里浏览,一切都显得非常正常。但是当我想要向从表单加入“创建”操作的时候,按钮虽然在那里,但是当我点击它的时候,它并没有将这个页面转换成一个可编辑表单。它只不过是重新显示了同一个页面。

再一次,我离成功仅一步之遥。但是我仍然不清楚怎么把它变成一个真正的数据输入表单。可能周末过节的灵感会让我茅塞顿开吧。

查看本文的国际来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章