基于AJAX技术实现Struts校验框架(3)
http://www.sina.com.cn 2006年04月20日 15:35
天极yesky
在此,我们把JDOM作为处理引擎并使用它生成XML消息。如图4所示,当开始校验并且所用校验框架是AJAX校验框架时,接下来要进行填充错误消息并且构建XML消息校验。
 图4.过滤和XML校验生成过程 |
ErrorMessageHandler
这个类具有XML消息构建器的功能,它基于identity和description属性来构建XML消息。在调用buildXMLMessage后,调用者就会准备文档并设置XML消息的根元素。这个类还有一个addNextXMLMessage函数,这个函数负责把其它校验消息添加进XML(见源代码中的列表1)。
AjaxValidationRequestProcessor类中的process方法负责把响应的content type设置为"text/xml"并且以字符串形式发送XML消息。该方法的代码如列表2(见所附源码)所示。
AjaxValidationRequestProcessor类中的processValidation方法负责填充action错误并且基于XML格式约定为客户端构建消息。此函数的代码如下所示:
... ActionErrors errors = (ActionErrors) request.getAttribute(Globals.ERROR_KEY); Locale locale = (Locale) request.getAttribute(Globals.LOCALE_KEY); generateXMLMessage(errors, identity, locale, sbXMLMessage); ... |
四、 客户端
构建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校验页面 |