分享

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

 WindySky 2007-01-22
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);
            ...
            

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多