使用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所示。
498)this.style.width=498;" border="0" />
图5
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7839366/viewspace-920177/
,如需转载,请注明出处,否则将追究法律责任。