在 JDeveloper 10.1.3 预览版中构建一个简单的 JSF 和 Toplink 应用程序

作者: Chris Schalk,甲骨文公司
2005 年 1 月

简介

JDeveloper 10.1.3 预览版不仅提供了广泛的可视化 JavaServer Faces 开发支持,而且还提供了综合的 Toplink 开发支持,通过该支持您可以非常轻松地创建将 Toplink 用作其模型的数据绑定 JSF 应用程序。

以下方法文档详细介绍了如何构建一个简单的 JSF/Toplink 应用程序,该应用程序显示 Toplink 持续中间层中的数据网格。

使用入门

在开始使用之前,请首先确保从 OTN 中下载 JDeveloper 10.1.3 预览版并将它安装到您的计算机中。 您还需要设置一个数据库连接。(本方法文档使用 HR 通用模式连接,但任何模式都将满足需要。)

  1. 要开始构建应用程序,我们将使用应用程序工作区向导,该向导将为中间层可持久性代码生成 Model 项目,并为应用程序的视图(和控制器)组件生成 ViewController 项目。File->New->General->Application。



    对于 Application Package Prefix,我们将使用“jsftoplink”,而对于 Application Template,我们将使用“Web Application [JSF, JSP, EJB]”。(我们实际上将不对该示例使用 EJB。)
  2. 单击 OK 生成工作区。
  3. 生成 Model 和 ViewController 项目后,我们将需要建立 View 项目与 Model 项目的相关性。双击 ViewController 项目,单击左侧树中的“Dependencies”,然后选中右侧 Model 项目旁边的复选框。



    单击 OK 继续操作。
  4. 现在我们可以使用 Toplink 构建 Model 代码。从向导中调用 Toplink。使用 File->New->Business Tier-> Java Objects From Tables。

  5. 调用向导后,单击 Next 前进到数据库连接选择窗格。选择您的 HR(或首选)连接。
  6. 在步骤 2(共 3 步)中,选择 Employees 表。

  7. 单击 Next 和 Finish 以为 Employees 表生成 Toplink Java 类。
  8. 现在您已经生成了 Toplink 类和初始映射,您将需要生成 Toplink 部署描述符。找到 Toplink Mapping 节点并右键单击“Generate toplink-deployment-descriptor.xml”。

  9. 现在,我们已经具备了基于 Toplink 的可持久性代码,我们可以生成一个简单 java 客户端以测试 Toplink 可持久性并在稍后将它用作 JSF JSP 应用程序的托管 bean。为此,请选择 Employees.java 类并右键单击“New Sample Java Client”。

  10. 可选:此时,您可以运行这个新示例客户端以确保 Toplink 可持久性代码能够正常运行。
  11. 现在,我们将在客户端类中创建一个新方法“getEmployees”。为此,请执行以下操作:
    • 将生成的“main”方法复制到一个名为“getEmployees()”的新方法中,然后将它的返回类型更改为 Vector。(这是 JSF 客户端稍后在我们创建视图时将使用的方法。)
    • 该方法执行结束时只返回 Vector(矢量)“对象”而不是打印每个记录。

      以下是新 getEmployees 方法的代码示例:(注意,您不应复制和粘贴此代码,这是因为您将需要您自己的 toplink 部署描述符路径。)

      import java.util.Vector;
      .
      .
      public Vector getEmployees()
      {
      EmployeesClient employeesClient = new EmployeesClient();
      // 要使用 sessions.xml,请取消对以下三行代码的注释,填写相应的资源位置并将 sessions.xml 添加到 classpath。
      // oracle.toplink.tools.sessionconfiguration.XMLLoader xmlLoader = new oracle.toplink.tools.sessionconfiguration.XMLLoader("META-INF/sessions.xml");
      // oracle.toplink.tools.sessionmanagement.SessionManager sessionManager = oracle.toplink.tools.sessionmanagement.SessionManager.getManager();
      // DatabaseSession session = (DatabaseSession)sessionManager.getSession(xmlLoader, "MySessionName", employeesClient.getClass().getClassLoader());
      // 要使用以上定义的 sessions.xml,请将以下三行代码注释掉。
      oracle.toplink.sessions.Project project = XMLProjectReader.read(" path-to-your-toplink-deployment-descriptor.xml");
      DatabaseSession session = project.createDatabaseSession();
      session.login();
      Vector objects = session.readAllObjects(jsftoplink.model.Employees.class);
      return objects;
      }

     

  12. 现在我们可以构建应用程序的视图,该视图将由一个 JSF JSP 页面组成,该页面使用 JSF DataTable 用户界面组件显示 Employee 数据。

构建视图

  1. 在 ViewController 项目中我们将构建一个支持 JSF 的 JSP 页面,方法是选择 File->New->Web-Tier->JSF->JSF JSP。

  2. 在您调用 JSF JSP 向导时,您可以将该页面命名为“emps.jsp”。您还可以保留类型和错误页面设置的缺省值,并单击“完成”生成您的页面。(要进一步定制该页面,请在 JSP 向导中单击“Next”。)
  3. 生成该页面后,可以添加一个如下所示的 <h2> 标记。您还可以从 CSS 面板页面中拖放一个层叠样式表(如 jdeveloper)。
  4. 继续操作前,我们需要将在 Model 项目中作为托管 bean 创建的 ModelBean 类添加到 Faces-Config.xml 文件中。为此,请在导航器中找到 faces-config.xml 文件 (Web Content->WEB-INF->faces-config.xml),然后双击它以编辑它的内容。
  5. faces-config.xml 文件的缺省编辑器是页面流建模器,但对于这个简单的应用程序,我们将不引入任何导航规则,因此单击页面底部的“Overview”选项卡以调用 faces-config 编辑控制台。
  6. 添加一个新的托管 Bean,方法是先单击该控制台左侧的 Managed Beans 节点,然后单击“New”。
    指定以下设置并单击“OK”:
    • Name:EmpsBean
    • Class: jsftoplink.model.EmployeesClient(浏览到您的 toplink Employee 客户端。)
    • Scope: Request

  7. 我们几乎已经实现了所有功能!现在我们所要做的就是将 Datatable 用户界面组件拖放到 emps JSP 页面中并对其进行数据绑定。幸运的是,JDeveloper 提供了一个用于数据绑定和定制 DataTable 的简单向导。
  8. 在 Component Palette 的 JSF HTML 页面上找到 JSF HTML 组件“Data Table”,然后将它拖放到 JSP 页面上。这将调用数据表向导。
  9. 调用该向导后,单击 Next 前进到第一页。将单选按钮保留在默认位置“Bind the Data Table Now”中,然后单击 Next。
  10. 使用下列值绑定:
    • Value: #{EmpsBean.employees}
    • Class: jsftoplink.model.Employees
    • Var: emps



      注意:对于 Value 绑定,您将使用 EL Binder 对话框以可视方式生成对相应的托管 bean 方法的表达式语言 (EL) 引用。

  11. 单击 Next 时,您将看到数据表向导的列配置页。使用该页面将 firstName 和 lastName 列移动到顶部。您还可以将“email”列的 Component 更改为 Output Link 而不是 Output Text。

    此外,由于 employeesCollection 列将不呈现该示例中的数据,因此您可以删除它。

  12. 单击 Finish 在 JSP 页中生成 DataTable 代码。您将看到一个包含显示列的空数据表。
    注意:该数据表在生产版本 10.1.3 中具有更佳的呈现效果,这是因为它在该版本中将显示一个指示数据类型的行。

  13. 现在,我们将运行该页面。右键单击 emps.jsp 页面并选择 Run。当该页面呈现在浏览器中时,您将看到 Employees 表的内容!

总结

该示例任务主要用作一个起点,通过它您可以开始尝试构建 JSF 应用程序(使用中间层中持久保存的数据。该示例使用 Toplink,但您也可以使用其他任何中间层技术。您还可以看到,使用 JDeveloper 10.1.3 的新可视化开发特性以及数据表向导(包括新的 JSF“OverView”faces-config 编辑器)构建该简单示例实际上很容易。当继续使用 JDeveloper 10.1.3 的生产特性时,我们将设法增强辅助绑定复合式用户界面组件(如 DataTable 向导)的特性。您可以在论坛中发表您对该方法的看法!

 

Left Curve
热门下载
Right Curve