练习 1.4:记录

EGL 记录部件是由一个或多个其它数据部件组成的复杂数据结构。基本变量和 dataItem 各自只能存放一份数据(例如,一个字符或一个数字值),而通过组合任意数目的其它数据部件,记录可以存放任意数目的数据。记录部件通常用来表示数据库记录,但需要将几个数据部件集中在一起来使用记录部件。

EGL 记录部件的类型

mqRecord
此类型的记录用于访问 WebSphereMQ。
sqlrecord
此类型的记录用于通过 SQL 访问关系表。
indexedRecord
此类型的记录用于访问索引文件。
serialRecord
此类型的记录用于访问顺序文件。
basicRecord
这是用于内部数据处理的通用记录。类型为 basicRecord 的记录不能直接访问外部数据。此练习着重介绍 basicRecord。

定义记录部件

与 dataItem 一样,必须先定义记录部件,然后才能根据记录部件创建变量。以下代码定义由三个不同的基本变量组成的记录部件。此记录部件的这三个字段都是采用创建基本变量所用的方法定义的。每个基本变量前面的数字在此练习的后面说明。

record myRecordPartOne  type basicRecord
  10 myCharField        char(30);
  10 myDecimalField     decimal(7,2);
  10 myIntField         int;
end

还可以使用 dataItem 作为记录中的字段,如下面的样本代码中所示。必须先定义 dataItem 部件,然后才能在记录部件定义中使用它们。

record myRecordPartTwo  type basicRecord
  10 myCharField        myCharFieldDataItem;
  10 myDecimalField     myDecimalFieldDataItem;
  10 myIntField         myIntFieldDataItem;
end

从记录部件创建和使用变量

记录变量是采用创建基本变量和 dataItem 变量所用的方法创建的。需为变量指定名称,然后指定它的数据部件。

myVariableOne     myRecordPartOne;
myVariableTwo     myRecordPartTwo;

但是,使用记录变量比使用其它类型的变量要复杂一些。因为记录是结构化数据部件,必须根据记录的结构访问记录中的字段。例如,可按如下所示给记录变量 myVariableOne 中的字段赋值:

myVariableOne.myCharField     = "The chararacter field information";
myVariableOne.myDecimalField  = 12.34;
myVariableOne.myIntField      = 10;

具有复杂结构的记录

记录中的每个字段都有一个级别号。包括级别号的记录称为固定记录。可以创建没有级别号的记录,但此教程中不讨论此类型的记录。有关没有级别号的记录的信息,请参阅帮助中的记录部件

级别号允许您为记录提供复杂的结构。通过使用级别号,在组织记录时可以在一些字段中嵌套另一些字段。例如,以下代码定义具有两个字段(即,Name 和 Address)的记录部件。Name 字段包含两个字段:FirstName 和 LastName。类似的,Address 字段包含四个字段:Street、City、State 和 PostalCode。

record myPersonRecordPart type basicRecord
  10 Name;
    20 FirstName        char(50);
    20 LastName         char(50);
  10 Address;
    20 Street           char(50);
    20 City             char(30);
    20 State            char(25);
    20 PostalCode       char(20);
end

与简单记录一样,必须根据记录的结构访问复杂记录中的字段。例如,以下代码从 myPersonRecordPart 数据部件创建一个变量并给它的六个字段赋值:

myPerson    myPersonRecordPart;

myPerson.Name.FirstName       = "Steve";
myPerson.Name.LastName        = "Smith";
myPerson.Address.Street       = "123 Maple Street";
myPerson.Address.City         = "Any City";
myPerson.Address.State        = "Any State";
myPerson.Address.PostalCode   = "12345";

EGL 记录部件的优点

在 PageHandler 中使用 EGL 记录

在下面的步骤中,将创建使用记录来处理数据的 Web 页面。

  1. 在“项目资源管理器”视图中,单击 EGLWeb 项目以选择它。
  2. 从菜单栏中,单击文件 > 新建 > Faces JSP 文件。将打开“新建 Faces JSP 文件”向导。
  3. 名称字段中,输入以下名称作为文件名:

    RecordTest

  4. 选择从页面模板创建复选框。
  5. 单击下一步
  6. 页面模板类型下面,单击用户定义的页面模板
  7. 缩略图下面,单击 A_gray.htpl 模板。
  8. 单击完成。这就会将新文件添加至项目,并且该文件会在编辑器中打开。
  9. 在新文件中,删除文本 Place your page content here
  10. 在删除文本的位置,输入 Record Variables,然后按 Enter 键。
  11. 右键单击页面,然后单击编辑页代码。将打开页代码文件。
  12. 删除页代码文件中的所有代码并用以下代码替换它:
  13. package pagehandlers;
    
    PageHandler RecordTest 
      {view="RecordTest.jsp", onPageLoadFunction=onPageLoad}
    
    //Variables
    
    personInput    myPersonRecordPart;
    personOutput   myPersonRecordPart;
    
    //Function definitions
    
      Function onPageLoad()
      End
    
      Function initializeRecord()
        personInput.Name.FirstName       = "Steve";
        personInput.Name.LastName        = "Smith";
        personInput.Address.Street       = "123 Maple Street";
        personInput.Address.City         = "Any City";
        personInput.Address.State        = "Any State";
        personInput.Address.PostalCode   = "12345";
      end
    
      Function clearAll()
        move " " to personInput;
      end
    
      Function clearAddress()
        move " " to personInput.Address;
      end
    
      Function moveRecord()
        move personInput to personOutput;
      end
    
       End
    
    //Record part definition
    
    record myPersonRecordPart type basicRecord
      10 Name;
        20 FirstName        char(50);
        20 LastName         char(50);
      10 Address;
        20 Street           char(50);
        20 City             char(30);
        20 State            char(25);
        20 PostalCode       char(20);
    end

    以下是一些有关刚才插入的代码的技术说明:

  14. 保存并关闭该文件。

在页面上显示变量

  1. 返回到 RecordTest.jsp 页面。
  2. 在“页数据”视图中,展开 RecordTest

    注意,在 PageHandler 中创建的两个记录变量就列示在此处。每个变量都可根据记录部件定义中的级别来展开。可以在页面上使用整个记录,也可以选择使用它的一部分。

  3. 从“页数据”视图中,将 personInput 记录变量拖到页面的底部。“插入控件”窗口将打开。
  4. 在“插入控件”窗口中,单击更新现有记录
  5. 单击选项
  6. 在“选项”窗口中,清除提交按钮复选框。
  7. 清除“删除按钮”复选框。
  8. 单击确定
  9. 单击完成。现在,记录中的字段就列示在页面上的表中。
  10. 从“选用板”视图的 Faces 组件抽屉中,将命令 - 按钮拖到页面上 {Error Messages} 字段的左边。
  11. 单击新按钮以选择它。
  12. 在“属性”视图中,单击显示选项选项卡。如果找不到显示选项选项卡,则确保选择了刚才创建的按钮。
  13. 在“属性”视图的显示选项选项卡上,在按钮标签字段中输入初始化记录
  14. 再重复步骤 10 到 13 三次以在第一个按钮旁边再创建三个具有以下标签的按钮:

    该页面看起来应如下所示:

    RecordTest.jsp 页面的外观

  15. 在“页数据”视图中,展开 Actions。此文件夹存放您添加至 PageHandler 的四个函数。
  16. initializeRecord() 函数从“页数据”视图拖到 Web 页面上的初始化记录按钮上。
  17. clearAll() 函数从“页数据”视图拖到 Web 页面上的全部清除按钮上。
  18. clearAddress() 函数从“页数据”视图拖到 Web 页面上的清除地址按钮上。
  19. moveRecord() 函数从“页数据”视图拖到 Web 页面上的移动记录按钮上。

    现在就已经将 PageHandler 中的每个函数(onPageLoad() 函数除外)绑定至 Web 页面上的相应按钮。下一步是根据创建的记录将输出字段添加至页面,以便保存输出内容。

  20. 单击刚才创建的四个按钮的下方并按 Enter 以插入空白行。
  21. 从“页数据”视图中,将 personOutput 记录变量拖到页面的底部。将再次打开“插入控件”窗口。
  22. 单击显示现有记录(只读)
  23. 单击完成。填写了输出字段的表将出现在页面上输入字段和按钮的下面。
  24. 保存该页面。

测试页面

既然您已经创建了具有多个变量和函数的页面,请注意,您就可以同时添加和处理几个基本变量,因为它们是集中在一个记录中的。当需要同时处理许多相关变量时,使用记录可节省时间。

  1. 在“项目资源管理器”视图中,右键单击 RecordTest.jsp 文件,然后从弹出菜单中单击运行 > 在服务器上运行
  2. 在 Web 浏览器中,单击初始化记录按钮。就会用记录的缺省数据填充输入字段。
  3. 通过将不同的信息输入到输入字段中然后按各按钮来测试该页面。

现在,您可以开始进行练习 1.5:数组了。

反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.