| |
基于AJAX技术实现Struts校验框架 |
|
时间: 2006-04-20 来自:天极开发 |
 |
|
四、 客户端
构建Taglib组件
· AjaxJavaScriptLibraryTag:该taglib组件负责生成客户端基本的XMLHTTP控制器函数的JavaScript函数部分。
· AjaxErrorHtmlRenderTag:该taglib组件负责在JSP页面上生成显示错误消息的区域。
配置Taglib定义
在开发完taglib组件后,我们需要使用如列表3(见所附源码)的方式来配置taglib的tld文件。
五、 构建JSP和Struts配置
为了模仿校验处理的结果,我们首先需要构建描述层-这可以通过加入我们已经构建的taglib来实现。在本文实例中,我将尽力使用Struts提供的校验规则组件和表单本身的校验功能来给出一个校验的实例。现在,我们在JSP页面中准备5个文本框。第一到第四个文本框使用校验规则配置,第5个文本框使用来自action表单的校验过程。此外,我们还需要一个提交按钮来实现提交表单后对此的模仿。注意,至此,现有的Struts校验仍然没有使用AJAX。用户接口如图5所示。
 图5.JSP校验页面 | 六、 构建Action和Action表单
对于Struts action,我们只需把它转发到我们已经构建的JSP即可,相应的action代码具有如下类似形式:
public ActionForward execute(...) { return mapping.findForward("success"); } | 如果输入为空,那么Action表单代码就对requiredText属性进行校验。记住,要从AjaxForm类中派生此表单类。此Action表单的validate方法看上去如下:
public ActionErrors validate(...) { ActionErrors errors = new ActionErrors(); if (StringUtils.isEmpty(this.requiredText)) { errors.add("requiredText", new ActionError("error.required.input")); } request.setAttribute(Globals.ERROR_KEY, errors); } | 七、 应用Struts校验规则
接下来要配置Struts校验规则,例如最小长度,最大长度,电子邮件和模式文本,等等。然后,把这些数据应用于客户端的输入对象。这一部分相应的配置类见列表4(详见所附源码)。
八、 校验处理流程
首先,客户端初始化XMLHTTP组件以实现对服务器的请求。然后,一旦开始构建用户激活的事件,URL的参数就被发送给服务器。在结束构建参数后,客户端将依附oneadystatechange XMLHTTP事件来听取(listen)来自服务器端的响应。在接收响应后,客户端开始分析XML校验消息并且把该消息存放到适当的地方(见图6)。
 图6.客户端处理流程 | 当服务器接收请求时,它就开始检查AJAX校验的参数并且进行校验。一旦完成校验,生成的对象就被过滤到与用户输入对象相联系的特定的错误中。在过滤操作完成后,即刻生成XML消息并把该消息发送回客户端(见图7)。
 图7.服务器端处理流程 | 九、 总结
在本文中,我们构建了一个控制器,它能够接收来自客户端的异步请求并且加入Struts校验过程来生成action错误对象。在生成错误对象和XML消息(见图8和图9)之后,对于即将被校验的特定输入对象的过滤操作立即执行。
 图8.在Struts校验框架内使用AJAX实现应用程序校验测试 |
 图9.Struts校验框架用例 |
|
|
|
|
|
|
|
|