ITPub博客

首页 > 应用开发 > IT综合 > 使用AJAX的Struts验证框架(2)

使用AJAX的Struts验证框架(2)

原创 IT综合 作者:lonlux2 时间:2007-06-21 12:56:26 0 删除 编辑

使用AJAX的Struts验证框架(2)

[@more@]ErrorMessageHandler

该类处理XML消息生成器的功能。此Java类将构建基于identity和description属性的XML消息。调用方调用了buildXMLMessage之后,它将准备文档并设置XML消息的根元素。此类还具有一个addNextXMLMessage函数,以将更多验证消息添加到XML(参见清单1)。

清单1

...

public void buildXMLMessage() throws ParserConfigurationException {

// initiate document builder to prepare the media of XML Message

this.rootElement = new Element(CONSTANT_MESSAGE);

addNextXMLMessage();

}

...

public void addNextXMLMessage() throws ParserConfigurationException {

// creating the xml message based on format above

Element identityElement = new Element(CONSTANT_IDENTITY);

identityElement.setAttribute(CONSTANT_NAME, this.identity);

Element descriptionElement = new Element(CONSTANT_DESCRIPTION);

descriptionElement.addContent(this.description);

identityElement.addContent(descriptionElement);

rootElement.addContent(identityElement);

}

此流程方法将响应的内容类型设置为“text/xml”,并将XML消息作为字符串发送。AjaxValidationRequestProcessor代码上的流程函数如清单2所示。

清单2

public void process(HttpServletRequest req, HttpServletResponse resp)

throws IOException, ServletException

{

if ( request.getParameter(CONSTANT_VALIDATION_FRAMEWORK_ARG) != null )

{

...

this.processValidate(req, resp, form, mapping);

response.setContentType(CONSTANT_XML_CONTENT_TYPE);

response.getWriter().write(sbXMLMessage.toString());

response.flushBuffer();

}

} else

{

super.process(req, resp);

}

}

processValidation方法将填充

动作错误,并基于面向客户端的XML格式契约构建消息。AjaxValidationRequestProcessor代码上的processValidation函数如下所示:

...

ActionErrors errors = (ActionErrors) request.getAttribute(Globals.ERROR_KEY);

Locale locale = (Locale) request.getAttribute(Globals.LOCALE_KEY);

generateXMLMessage(errors, identity, locale, sbXMLMessage);

...

客户端场景 构建标签库组件

  • AjaxJavaScriptLibraryTag:此标签库组件在客户端呈现JavaScript功能,以实现基本XMLHTTP控制器功能。
  • AjaxErrorHtmlRenderTag:此标签库组件在JSP页面呈现错误消息区域。
配置标签库定义

开发出标签库组件之后,我们需要配置清单3中显示的标签库tld文件。

清单3

 
1.0
1.1
ajaxLib


library
net.sf.ajax.taglib.AjaxJavaScriptLibrary

JSP



error
net.sf.ajax.taglib.AjaxErrorHtmlRender

JSP

property
true
true


event
true
true




构建JSP和Struts配置

要模拟验证处理的结果,我们首先需要构建呈现层,方法是合并我们已经构建的标签库。在此例中,我试图给出一个示例验证(通过使用来自Struts的验证规则组件)以及来自表单本身的验证。准备五个JSP页面下的文本框。第一个到第四个文本框使用验证规则配置,第五个文本框使用来自动作表单的验证流程。除此之外,我们还需要一个提交按钮,以在提交表单后模拟它,现有的struts验证仍在没有AJAX的情况下工作。用户界面外观如图5所示。

图5498)this.style.width=498;" border="0" />

图5

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7839366/viewspace-920177/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    157
  • 访问量
    72350