在此教程中,您已经编写了 EGL 代码并在 Web 应用程序服务器上运行了此代码。在其它情况下,您可能需要使用以另一种语言编写的代码或在另一个平台上运行的代码。EGL call 语句将控制权转移另外一个程序,该程序可以用另一种语言编写,并且可以在调用 EGL 代码之外的平台上运行该程序。
在此练习中,将创建一个外部 EGL 程序,它验证输入到 UpdateSession.jsp 页面中的用户标识。此外部程序可以是用 EGL 编写的并在 Web 应用程序所在的服务器上运行,也可以是用另外一种语言编写的并在另一个平台上运行。此外部程序执行的服务器端验证比在上一个练习中使用的验证要复杂一些。
有关 EGL call 语句的更多信息,请参阅帮助主题 call。
在此部分中,将创建一个存放有关用户标识的信息的 EGL 记录部件。如果将在多个程序或 PageHandler 中使用该记录部件,则编程时最好将记录部件定义放在一个单独的文件中而不是放在一个页代码文件中。
userIDRecord
“新建 EGL 部件”窗口看起来应如下所示:
package data; Record userIDRecord type basicRecord userID char(50); isValid char(1); validationMessage char(100); end此代码创建一个具有三个字段的简单 EGL 记录部件。一个字段存放用户标识本身,另外一个字段存放指示该用户标识是否有效的一个字符,最后一个字段存放来自于验证器函数的成功或错误消息的字符串。
UserIDValidation
“新建 EGL 部件”窗口看起来应如下所示:
package data; program UserIDValidation (userID userIDRecord) lengthOfUserID int; function main() userID.isValid = "Y"; lengthOfUserID = strLib.strLen(userID.userID); if (lengthOfUserID > 12) userID.isValid = "N"; userID.validationMessage = "Your user ID can be no longer than 12 characters"; end if (lengthOfUserID < 5) userID.isValid = "N"; userID.validationMessage = "Your user ID must be at least 5 characters long"; end if (userID.isValid == "Y") userID.validationMessage = "Your user ID is valid"; end end end
以下是一些有关刚才插入的代码的技术详细信息:
既然已经创建了存放用户标识的记录以及可以对用户标识进行评估的外部程序,最后一步就是设置 UpdateSession PageHandler 以使用该外部程序。
Function updateSession() userID userIDRecord; userID.userID = userSession.userid; call data.UserIDValidation userID; if (userID.isValid == "Y") setSessionAttr("sess",userSession); forward to "ViewSession"; else setError(userID.validationMessage); end end
以下是一些有关此函数中的代码的技术详细信息:
您输入的用户标识不能通过验证程序,因此不会更新会话对象,而页面会显示错误消息。该页面看起来应如下所示:
这是此教程中的最后一个练习。请继续查看教程总结。