练习 2.4:动态填充组合框

要使用户尽可能容易地使用搜索,应防止用户出错并简化用户可能需要作出的决定。在此练习中,将学习如何通过将 State 输入字段替换为组合框来使搜索页面易于使用。此组合框只列示至少由数据库中的一个客户记录代表的那些州,从而使用户不必猜测要使用哪个州。

将代码添加至库

  1. 打开 CustomerLib.egl。
  2. 将以下代码添加至文件中最后一个 end 语句的前面:
    function getAllCustomerStates(Customers Customer[])
        get Customers with
            #sql{
                select STATE
                from EGL.CUSTOMER
                group by STATE
            };
    end

    以下是一些有关刚才添加的 getAllCustomerStates 函数的技术说明:

  3. 保存该文件。
  4. 通过按 Ctrl+G 或通过右键单击文件然后从弹出菜单中单击生成来为库文件生成 Java 文件。
  5. 关闭该文件。

将代码添加至 PageHandler

  1. 返回到 customersearch.jsp 页面。
  2. 右键单击 customersearch.jsp 页面,然后从弹出菜单中单击编辑页代码
  3. 在 customersearch.egl 文件中,找到以 andOr char(3); 开头的代码行并在它下面添加一个空白行。
  4. 在添加的新空白行上,插入下面一行代码:

    customerStates Customer[];

  5. 找到以 Function onPageLoad() 开头的代码行并在它下面添加一个空白行。
  6. 在刚才在 Function onPageLoad() 这一行下面添加的新空白行中,插入下面一行代码:

    CustomerLib.getAllCustomerStates(customerStates);

    customersearch.egl 文件看起来应如下所示:

    customersearch.egl 文件中的代码

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

  7. 保存并关闭该文件。

将组合框添加至页面

添加动态填充的组合框比添加具有预先定义的值的 JSF 控件(如在前一个练习中添加的单选按钮组)复杂一些。此组合框必须绑定至两段 EGL 数据:

  1. 返回到 customersearch.jsp 页面。
  2. 单击 STATE 输入字段,然后按 Delete 键。
  3. 在删除输入字段的位置,添加来自“选用板”视图的“Faces 组件”抽屉中的组合框
  4. 在“页数据”视图中,展开 customersearch > customerStates - Customer[]
  5. 在“页数据”视图中的 customerStates - Customer[] 下面,将 state - STATE 拖到组合框上。
  6. 单击组合框以选择它。
  7. 打开“属性”视图。
  8. 在“属性”视图中字段的旁边,单击选择页数据对象 按钮。将打开“选择页数据对象”窗口。
  9. 在“选择页数据对象”窗口中,展开 customersearch > searchTerms - Customer
  10. searchTerms - Customer 下面,单击 state - STATE

    “选择页数据对象”窗口看起来应如下所示:

    “选择页数据对象”窗口的外观

  11. 单击确定
  12. 保存该页面。
  13. 测试该页面。

现在,您可以开始进行练习 2.5:定制搜索结果了。

使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.