练习 1.7:循环

循环允许逻辑部件多次执行同一段 EGL 代码。通常使用循环来处理数组,这是因为循环允许您对数组中的每个元素执行同一个操作。EGL 包括三种类型的循环,在使用其它编程语言时您可能已经熟悉它们了:whileforforEach

在此练习中,将创建这样的一个 PageHandler:它使用 EGL getSize() 函数来找出数组中的元素个数。然后,对数组中的每个元素执行一次 for 循环。这样,PageHandler 就可计算出数组中符合特定条件的记录数。

有关 EGL 中的循环的更多信息,请参阅帮助主题 whileforforEach

创建使用循环的 PageHandler

在下面的步骤中,创建这样的一个 Web 页面:使用循环对数据库中特定州的实例进行计数。

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

    LoopTest

  4. 选择从页面模板创建复选框。
  5. 单击下一步
  6. 页面模板类型下面,单击用户定义的页面模板
  7. 缩略图下面,单击 A_gray.htpl 模板。
  8. 单击完成。这就会将新文件添加至项目,并且该文件会在编辑器中打开。
  9. 在新文件中,删除文本 Place your page content here
  10. 在删除文本的位置,输入 Testing loops,然后按 Enter 键。
  11. 右键单击页面,然后单击编辑页代码。将打开页代码文件。
  12. 删除页代码文件中的所有代码并用以下代码替换它:
  13. package pagehandlers;
    
    import data.*;
    
    PageHandler LoopTest 
      {view="LoopTest.jsp", onPageLoadFunction=onPageLoad}
    
    //Variables
    listOfAllCustomers   customer[];
    inputState           char(2)
      {displayName = "Enter a state:"};
    outputMessage        char(100);
    outputSum            int;
    
      Function onPageLoad()
        customerLib.getAllCustomers(listOfAllCustomers);
      end
    
      Function testSimpleLoop()
        //Initialize variables
        counter int = 1;
        outputSum = 0;
        outputMessage = "";
        numberOfRecords int = listOfAllCustomers.getSize();
    
        //Find the number of times the input state is in the customers array
        for (counter from 1 to numberOfRecords by 1)
          if (listOfAllCustomers[counter].STATE == inputState)
            outputSum = outputSum + 1;
          end
        end   
    
        //Create an output message describing the number of customers found
        if (outputSum == 0)
          outputMessage = "No customers are from the state " + inputState;
        else
          outputMessage = "There are " + outputSum + " customers from " + inputState; 
        end   
    
      end
    
    end

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

  14. 保存并关闭该文件。

在 Web 页面上使用循环

  1. 返回到 LoopTest.jsp 页面。
  2. 在“页数据”视图中,单击 listOfAllCustomers 数组并将它拖到页面上内容为 Testing loops 的文本下面。将打开“插入列表控件”窗口。
  3. 在“插入列表控件”窗口中,单击。现在数据库记录中的所有列都处于未选中状态。
  4. 列名列中,选择 first_namelast_namestate 列的复选框。

    “插入列表控件”窗口看起来应如下所示:

    “插入列表控件”窗口的外观

  5. 单击完成。这就会将三个选中的列以数据表的形式添加至页面。
  6. 单击新数据表下方然后按 Enter 键以添加一个新行。
  7. 从“页数据”视图中,将 outputMessage 变量拖到新行上。将打开“插入控件”窗口。
  8. 在“插入控件”窗口中,单击显示现有记录(只读)
  9. 单击完成
  10. 在页面的底部添加另一个空白行。
  11. 从“页数据”视图中,将 inputState 变量拖到页面底部的新行上。将打开“插入控件”窗口。
  12. 在“插入控件”窗口中,单击更新现有记录
  13. 单击选项。将打开“选项”窗口。
  14. 清除删除按钮复选框。
  15. 选择提交按钮复选框。
  16. 提交按钮标签字段中,输入计算来自此州的记录数
  17. 单击确定
  18. 单击完成
  19. 从“页数据”视图中,将 testSimpleLoop() 函数拖到页面“计算来自此州的记录数”按钮上。
  20. 保存该页面。

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

    LoopTest.jsp 页面的外观

  21. 在服务器上测试该页面。
  22. 当页面在 Web 浏览器中打开时,输入美国州名的两字符的缩写,例如,NCCT,然后单击计算来自此州的记录数按钮。页面显示数据库中来自该州的记录数。

继续模块 2:EGL 代码开发工具

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