练习 3.1:重定向至另一个页面

在前面的 EGL 教程中,您学会了如何通过将参数添加至超链接来将数据从一个 Web 页面发送至另一个 Web 页面。在此练习中,将学习将数据从一个页面发送至另一个页面的另一种方法,即:通过使用 EGL forward 语句。此语句工作方式与超链接非常相似,但由于 forward 语句在 EGL 代码中而不是在页面上,所以用户看不到转发操作和被转发的参数。另外,通过使用 forward 语句,您具有更多的控制权,因为您可以随时 EGL 代码中转发至另一页面并且可以将 EGL 范围内的变量作为参数。

使用 forward 语句有两种方法:

forward to "myOtherPage";
这样使用 forward 语句会将控制权重定向至 JSF 配置文件中标识为 myOtherPage 的页面。在此教程中,从 PageHandler 和页面的名称中除去 .jsp 扩展名之后,就是 JSF 配置文件中的每个页面的名称。
forward myVariable1, myVariable2 to "myOtherLogicPart";
这样使用 forward 语句会将参数 myVariable1myVariable2 发送至 myOtherLogicPart。当将参数转发至另一个页面时,必须确保已配置该页面的 PageHandler,从而可以接受这些参数。

有关 EGL forward 语句的更多信息,请参阅产品帮助中的 forward

创建使用 forward 语句的 PageHandler

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

    RedirectTest

  4. 选择从页面模板创建复选框。
  5. 单击下一步
  6. 页面模板类型下面,单击用户定义的页面模板
  7. 缩略图下面,单击 A_gray.htpl 模板。
  8. 单击完成。这就会将新文件添加至项目,并且该文件会在编辑器中打开。
  9. 在新文件中,删除文本 Place your page content here
  10. 在删除文本的位置,输入 EGL forwarding examples,然后按 Enter 键。
  11. 右键单击页面,然后单击编辑页代码。将打开页代码文件,该文件包括此页面的 PageHandler。
  12. 删除页代码文件中的所有代码并用以下代码替换它:
    package pagehandlers;
    
    PageHandler RedirectTest 
      {view = "RedirectTest.jsp", onPageLoadFunction = onPageLoad}
    
    myIntVariable int
      {displayName = "Integer variable:"};
      
    myCharVariable char(100)
      {displayName = "Character variable:"};
    
      Function onPageLoad()
      End
    	
      Function forwardWithParameters()
        forward myIntVariable, myCharVariable to "ParameterPage";
      end
    	
      Function forwardToAllCustomers()
        forward to "allcustomers";
      end
    	
    End

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

  13. 保存并关闭该文件。
  14. 返回到 RedirectTest.jsp 页面。
  15. 在“页数据”视图中,选择变量 myCharVariablemyIntVariable 并将它们拖到页面上。“插入控件”窗口将打开。
  16. 在“插入控件”窗口中,单击更新现有记录
  17. 单击选项按钮。将打开“选项”窗口。
  18. 在“选项”窗口中,清除提交按钮删除按钮复选框。
  19. 单击确定
  20. 单击完成。这就将这些字段添加至页面了。
  21. 在新字段后面添加一个空白行。
  22. 从“选用板”视图的 Faces 组件抽屉中,将两个命令 - 按钮组件拖到新的空白行上。
  23. 单击其中一个新按钮,然后打开“属性”视图的显示选项选项卡。
  24. 在“属性”视图中,将按钮标签更改为转发至 allcustomers.jsp
  25. 用同样的方法,将另一个按钮的标签更改为带参数转发
  26. 从“页数据”视图中,将 forwardToAllcustomers() 函数拖到标记为“转发到 allcustomers.jsp”的按钮上。
  27. 从“页数据”视图中,将 forwardWithParameters() 函数拖到标记为“带参数转发”的按钮上。
  28. 保存该页面。

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

    RedirectTest.jsp 页面的外观

创建接受来自 forward 语句的参数的页面

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

    ParameterPage

  4. 选择从页面模板创建复选框。
  5. 单击下一步
  6. 页面模板类型下面,单击用户定义的页面模板
  7. 缩略图下面,单击 A_gray.htpl 模板。
  8. 单击完成。这就会将新文件添加至项目,并且该文件会在编辑器中打开。
  9. 在新文件中,删除文本 Place your page content here
  10. 在删除文本的位置,输入 Forwarded parameters,然后按 Enter 键。
  11. 右键单击页面,然后单击编辑页代码。将打开页代码文件。
  12. 删除页代码文件中的所有代码并用以下代码替换它:
    package pagehandlers;
    
    PageHandler ParameterPage
      {view = "ParameterPage.jsp", onPageLoadFunction = onPageLoad}
    
    myIntParameter int;
    myCharParameter char(100);
    
      Function onPageLoad(myIntVariable int, myCharVariable char(100))
        myIntParameter = myIntVariable;
        myCharParameter = myCharVariable;
      End
    	
    End

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

  13. 保存并关闭该文件。
  14. 返回到 ParameterPage.jsp 页面。
  15. 在“页数据”视图中,选择变量 myCharParametermyIntParameter 并将它们拖到页面上。“插入控件”窗口将打开。
  16. 在“插入控件”窗口中,单击显示现有记录(只读)
  17. 单击完成
  18. 保存该页面。

测试页面

  1. 在服务器上运行 RedirectTest.jsp 页面。
  2. 当在 Web 浏览器中打开 RedirectTest.jsp 页面时,请将一个整数输入到整数变量字段中并将一个字符输入到字符变量字段中。
  3. 单击带参数转发

    浏览器将转发至 ParameterPage.jsp 页面,该页面显示的是使用 forward 语句传递的值。此页面看起来类似于下图,您输入的值就在页面的字段中:

    传递两个参数之后的 ParameterTest.jsp 页面

  4. 还可以测试将浏览器转发至 allcustomers.jsp 页面的按钮。

将控制权从一个页面或程序转发至另一个页面或程序有许多方法,这只是其中一种。有关根据是否存在会话变量向用户显示不同页面的方法,请参阅名为对会话变量测试浏览器的帮助主题。

继续练习 3.2:使用内置 EGL 函数

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