EGL 源格式的 PageHandler 部件

可以在 EGL 文件中声明 pageHandler 部件,EGL 项目、包和文件对该部件作了描述。这个部件是主部件,这意味着它必须位于文件的顶层,并且必须与文件同名。

以下是 pageHandler 部件的一个示例:
// Page designer requires that all pageHandlers 
// be in a package named "pagehandlers".
package pagehandlers ;

PageHandler ListCustomers 
  {onPageLoadFunction="onPageLoad"}  

  // Library for customer table access
  use CustomerLib3;  

  // List of customers
	 customerList Customer[] {maxSize=100}; 

	Function onPageLoad()
		
    // Starting key to retrieve customers
    startkey CustomerId;   		
  
    // Result from library call
    status int;            
		
    		// Retrieve up to 100 customer records
		startKey = 0;
		CustomerLib3.getCustomersByCustomerId(startKey, customerList, status);
		if ( status != 0 && status != 100 )
			setError("Retrieval of Customers Failed.");
    	end
	 end 

	 Function returnToIntroductionClicked()
  		forward to "Introduction";
	 end 
End
pageHandler 部件的图如下所示:

pageHandler 部件的语法图
PageHandler pageHandlerPartName ... end
将部件标识为页面处理程序并指定部件名。有关命名规则,请参阅命名约定
pageHandlerProperty
页面处理程序属性。有关详细信息,请参阅页面处理程序的属性
use dataTablePartName, use libraryPartName
使用声明,它简化对数据表或库的访问。有关详细信息,请参阅使用声明
private
指示变量、常量或函数对于显示 Web 页面的 JSP 来说不可用。如果省略术语 private,则可以将变量、常量或函数与 Web 页面上的控件绑定。
dataItemName
数据项(变量)的名称。有关规则,请参阅命名约定
primitiveType
对数据项指定的基本类型。
length
结构项的长度,它是一个整数。基于结构项的内存区域的值包括指定的字符或数字的数量。
decimals
对于数字类型(BIN、DECIMAL、NUM、NUMC 或 PACF),可以指定 decimals,它是用来表示小数点后的位数的整数。最大小数位数是以下两个数字中较小的那一个:18 或声明为 length 的位数。小数点不与数据存储在一起。
dataItemPartName
dataItem 部件的名称,该部件是数据项的格式模型,如 typeDef 所述。dataItem 部件必须对 pageHandler 部件可见,如对部件的引用中所述。
itemProperty
项属性。有关详细信息,请参阅页项属性
recordName
记录(变量)的名称。有关规则,请参阅命名约定
recordPartName
记录部件的名称,该部件是记录的格式模型,如 typeDef 所述。记录部件必须对 pageHandler 部件可见,如对部件的引用中所述。
recordProperty
记录属性覆盖。有关记录属性的详细信息,根据 recordPartName 中的记录类型的不同,请参阅下列其中一项描述:
itemName
您打算覆盖其属性的记录项的名称。
itemProperty
项属性覆盖。有关详细信息,请参阅 EGL 属性与覆盖概述
constantName literal
常量的名称和值。有关规则,请参阅命名约定
arrayName
记录或数据项的动态或静态数组的名称。如果使用此选项,则右边的其它符号(dataItemPartNameprimitiveType 等等)是指数组的每个元素。
functionPart
嵌入的函数。有关语法的详细信息,请参阅 EGL 源格式的函数部件

页面处理程序的属性

页面处理程序的属性如下所示并且是可选的:
alias = "alias"
一个字符串,它包含在生成的输出的名称中。如果未指定别名,则改为使用 pageHandler 部件名。
allowUnqualifiedItemReferences = no, allowUnqualifiedItemReferences = yes
指定是否允许代码引用结构项但却不包括容器的名称,该容器是存放结构项的数据表、记录或表单。例如,请参照以下记录部件:
  Record aRecordPart type basicRecord
    10 myItem01 CHAR(5);
    10 myItem02 CHAR(5);
  end
以下变量基于该部件:
  myRecord aRecordPart;
如果接受 allowUnqualifiedItemReferences 的缺省值(no),则在引用 myItem01 时必须指定记录名,如以下赋值所示:
  myValue = myRecord.myItem01;
然而,如果将属性 allowUnqualifiedItemReferences 设置为 yes,则无需指定记录名:
  myValue = myItem01;

建议您接受缺省值,这样有助于实现最佳实践。通过指定容器名,可以减少对阅读代码的人以及对 EGL 造成的歧义。

EGL 使用一组规则来确定变量名或项名所引用的内存区域。有关详细信息,请参阅对变量和常量的引用

handleHardIOErrors = yes, handleHardIOErrors = no
设置系统变量 VGVar.handleHardIOErrors 的缺省值。该变量控制在 try 块中的 I/O 操作发生硬错误后程序是否继续运行。该属性的缺省值为 yes,它将该变量设置为 1。

有关其它详细信息,请参阅 VGVar.handleHardIOErrors异常处理

includeReferencedFunctions = no, includeReferencedFunctions = yes
指示页面处理程序 bean 是否包含每个既不在页面处理程序中也不在页面处理程序所访问的库中的函数的副本。缺省值为 no,这表示如果在开发时按照建议遵守以下惯例,则可以忽略此属性:
  • 将共享函数放在库中
  • 将非共享函数放在页面处理程序中

如果正在使用不在库中的共享函数,则仅当将属性 includeReferencedFunctions 设置为 yes 时才有可能进行生成。

localSQLScope = no, localSQLScope = yes
指示 SQL 结果集和预编译语句的标识对于 pageHandler 是不是局部的(在缺省情况下是局部的)。如果接受值 yes,则表示从 pageHandler 调用的不同程序可独立使用相同的标识。

如果指定 no,则标识在整个运行单元中共享。在当前代码中创建的标识在其它地方也是可用的,尽管其它代码可使用 localSQLScope = yes 来阻止访问这些标识。而且,当前代码可以引用在其它位置创建的标识,但仅当其它代码已经运行并且没有阻止访问时才会如此。

共享 SQL 标识的影响如下所示:
  • 可以在一个 pageHandler 或被调用程序中打开某个结果集并从另一个代码中获取该结果集中的行
  • 可以在一个代码中预编译某个 SQL 语句并且在另一个代码中运行该语句
msgResource = "logicalName"
标识显示错误消息时要使用的 Java™ 资源束或属性文件。资源束或属性文件的内容由一组键和相关的值组成。

当程序对 EGL 系统函数 sysLib.setError 的调用使用了特定值的键时,作为对该调用的响应,将显示该值。

onPageLoadFunction = "functionName"
页面处理程序函数的名称,当相关 JSP 最初显示 Web 页面时,该页面处理程序函数接收控制权。此函数可用来设置页中显示的数据的初始值。此属性以前是 onPageLoad 属性。
scope = session, scope = request
指定在将 pageHandler 数据发送至 Web 页面后会发生的操作:
  • 如果作用域设置为 session(这是缺省值),pageHandler 变量值将保留在整个用户会话中,并且用户以后在访问同一 pageHandler 时不会重复调用 OnPageLoad 函数
  • 如果作用域设置为 request,pageHandler 变量值将被丢失,并且用户在访问同一页面处理程序时将重新调用 OnPageLoad 函数

建议显式设置此属性以表示您的决定,这会极大地影响 Web 应用程序的设计和操作。

throwNrfEofExceptions = no, throwNrfEofExceptions = yes

指定软错误是否导致抛出异常。缺省值为 no。有关背景知识信息,请参阅异常处理

title = "literal"
title 属性是一个绑定属性,它表示当您在 Page Designer 中工作时,该属性的赋值将被用作缺省值。该属性指定页面的标题。

literal 是加引号的字符串。

validationBypassFunctions = ["functionNames"]
标识一个或多个事件处理程序,它们是与 JSP 中的按钮控件相关联的页面处理程序函数。用逗号将每个函数名与下一个函数名隔开。

如果在此上下文中指定事件处理程序,则当用户单击属于事件处理程序或与事件处理程序相关的按钮或超文本链接时,EGL 运行时将跳过输入字段和页验证。此属性对于保留用于结束当前页面处理程序处理并将控制权立即转移至另一个 Web 资源的用户操作而言很有用。

validatorFunction = "functionName"
标识页面处理程序验证器函数,在调用了所有项验证器之后,将调用这个页面处理程序验证器函数,如使用 EGL 构建的 Web 应用程序中的验证中所述。 此属性以前是 validator 属性。
view = "JSPFileName"
标识与页面处理程序绑定的 Java Server Pages(JSP)的名称和子目录路径。JSPFileName 是加引号的字符串。

缺省值是页面处理程序的名称,并且文件扩展名为 .jsp。如果指定此属性,则包括文件扩展名(如果有的话)。

当保存或生成页面处理程序时,EGL 会将一个 JSP 文件添加到项目中以便以后进行定制,除非在适当的文件夹(WebContent\WEB-INF 文件夹)中已存在同名的 JSP 文件(名称是在 view 属性中指定的)。EGL 决不会覆盖 JSP。

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