练习 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 语句会将参数 myVariable1 和 myVariable2 发送至 myOtherLogicPart。当将参数转发至另一个页面时,必须确保已配置该页面的 PageHandler,从而可以接受这些参数。
有关 EGL forward 语句的更多信息,请参阅产品帮助中的 forward。
创建使用 forward 语句的 PageHandler
- 在“项目资源管理器”视图中,单击 EGLWeb 项目以选择它。
- 从菜单栏中,单击文件 > 新建 > Faces JSP 文件。将打开“新建 Faces JSP 文件”向导。
- 在名称字段中,输入以下名称作为文件名:
RedirectTest
- 选择从页面模板创建复选框。
- 单击下一步。
- 在页面模板类型下面,单击用户定义的页面模板。
- 在缩略图下面,单击 A_gray.htpl 模板。
- 单击完成。这就会将新文件添加至项目,并且该文件会在编辑器中打开。
- 在新文件中,删除文本 Place your page content here。
- 在删除文本的位置,输入 EGL forwarding examples,然后按 Enter 键。
- 右键单击页面,然后单击编辑页代码。将打开页代码文件,该文件包括此页面的 PageHandler。
- 删除页代码文件中的所有代码并用以下代码替换它:
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
以下是一些有关刚才插入的代码的技术说明:
- 此代码创建了两个变量,一个字符变量和一个整数变量。
- 此代码创建了包含 forward 语句的两个函数。其中一个函数将浏览器重定向至另一个页面但不发送任何参数。另一个函数带参数将浏览器重定向另一个页面,将在后面的练习中创建该页面。
- 可能会在执行第一个 forward 语句时看到错误。产生这些错误的原因是尚未创建 ParameterPage PageHandler 的 onPageLoad() 函数。
- 保存并关闭该文件。
- 返回到 RedirectTest.jsp 页面。
- 在“页数据”视图中,选择变量 myCharVariable 和 myIntVariable 并将它们拖到页面上。“插入控件”窗口将打开。
- 在“插入控件”窗口中,单击更新现有记录。
- 单击选项按钮。将打开“选项”窗口。
- 在“选项”窗口中,清除提交按钮和删除按钮复选框。
- 单击确定。
- 单击完成。这就将这些字段添加至页面了。
- 在新字段后面添加一个空白行。
- 从“选用板”视图的 Faces 组件抽屉中,将两个命令 - 按钮组件拖到新的空白行上。
- 单击其中一个新按钮,然后打开“属性”视图的显示选项选项卡。
- 在“属性”视图中,将按钮标签更改为转发至 allcustomers.jsp。
- 用同样的方法,将另一个按钮的标签更改为带参数转发。
- 从“页数据”视图中,将 forwardToAllcustomers() 函数拖到标记为“转发到 allcustomers.jsp”的按钮上。
- 从“页数据”视图中,将 forwardWithParameters() 函数拖到标记为“带参数转发”的按钮上。
- 保存该页面。
该页面看起来应如下所示:

创建接受来自 forward 语句的参数的页面
- 在“项目资源管理器”视图中,单击 EGLWeb 项目以选择它。
- 从菜单栏中,单击文件 > 新建 > Faces JSP 文件。将打开“新建 Faces JSP 文件”向导。
- 在名称字段中,输入以下名称作为文件名:
ParameterPage
- 选择从页面模板创建复选框。
- 单击下一步。
- 在页面模板类型下面,单击用户定义的页面模板。
- 在缩略图下面,单击 A_gray.htpl 模板。
- 单击完成。这就会将新文件添加至项目,并且该文件会在编辑器中打开。
- 在新文件中,删除文本 Place your page content here。
- 在删除文本的位置,输入 Forwarded parameters,然后按 Enter 键。
- 右键单击页面,然后单击编辑页代码。将打开页代码文件。
- 删除页代码文件中的所有代码并用以下代码替换它:
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
以下是一些有关刚才插入的代码的技术说明:
- onPageLoad 函数接受从 RedirectTest.jsp 页面中的 forward 语句传递来的两个参数。然后,此函数将那些值赋给此 PageHandler 中的两个变量。
- 保存并关闭该文件。
- 返回到 ParameterPage.jsp 页面。
- 在“页数据”视图中,选择变量 myCharParameter 和 myIntParameter 并将它们拖到页面上。“插入控件”窗口将打开。
- 在“插入控件”窗口中,单击显示现有记录(只读)。
- 单击完成。
- 保存该页面。
测试页面
- 在服务器上运行 RedirectTest.jsp 页面。
- 当在 Web 浏览器中打开 RedirectTest.jsp 页面时,请将一个整数输入到整数变量字段中并将一个字符输入到字符变量字段中。
- 单击带参数转发。
浏览器将转发至 ParameterPage.jsp 页面,该页面显示的是使用 forward 语句传递的值。此页面看起来类似于下图,您输入的值就在页面的字段中:

- 还可以测试将浏览器转发至 allcustomers.jsp 页面的按钮。
将控制权从一个页面或程序转发至另一个页面或程序有许多方法,这只是其中一种。有关根据是否存在会话变量向用户显示不同页面的方法,请参阅名为对会话变量测试浏览器的帮助主题。
继续练习 3.2:使用内置 EGL 函数。