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);
...
|
|