/** * get RemoteView according to request. HTTP Header from JQuery XHR: Accept: application/json, * text/javascript, * / * Accept: application/xml, text/xml, * / * However, IE6 will send Accept: * * / * and accept: application/json, text/javascript, * / * at same time * * @param req * @return */ private String getViewType(VRaptorServletRequest req) { Enumeration<?> accepts = req.getHeaders(ACCEPTREQUESTEADER); // IE6 will send two Accept header StringBuilder acceptBuilder = new StringBuilder(); for (; accepts.hasMoreElements(); ) { acceptBuilder.append(accepts.nextElement()); acceptBuilder.append(", "); } String accept = acceptBuilder.toString(); if (StringUtils.isEmpty(accept)) return null; if (accept.indexOf("application/json") > -1) { return SUPPORTEDJSON; } else if (accept.indexOf("application/xml") > -1) { return SUPPORTEDXML; } return null; }
/** * is it XMLHttpRequest? when JQuery send a ajax request to remote, it will send the header. * xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); * * @param req * @return */ private boolean isXhr(VRaptorServletRequest req) { return XHRHEADERVALUE.equals(req.getHeader(XREQUESTEADER)); }