該類處理XML消息生成器的功能。此Java類將構(gòu)建基于identity和description屬性的XML消息。調(diào)用方調(diào)用了buildXMLMessage之后,它將準(zhǔn)備文檔并設(shè)置XML消息的根元素。此類還具有一個addNextXMLMessage函數(shù),以將更多驗證消息添加到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); } |
此流程方法將響應(yīng)的內(nèi)容類型設(shè)置為“text/xml”,并將XML消息作為字符串發(fā)送。AjaxValidationRequestProcessor代碼上的流程函數(shù)如清單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格式契約構(gòu)建消息。AjaxValidationRequestProcessor代碼上的processValidation函數(shù)如下所示:
... ActionErrors errors = (ActionErrors) request.getAttribute(Globals.ERROR_KEY); Locale locale = (Locale) request.getAttribute(Globals.LOCALE_KEY); generateXMLMessage(errors, identity, locale, sbXMLMessage); ... |