In CQ, we need to process jsp within servlet then combine the result with other results we get from server before writing back to browser.
The following code is almost what we need, except that it writes the result back to browser after processing jsp.
RequestDispatcher dispatcher = request.getRequestDispatcher(resource);
dispatcher.forward(request, response);
We tried using mock response as follows:
RequestData requestData = new RequestData(slingRequestProcessor, request, mockResponse);
SlingHttpServletRequest slingRequest = requestData.getSlingRequest();
SlingHttpServletResponse slingResponse = requestData.getSlingResponse();
RequestDispatcher dispatcher = request.getRequestDispatcher(resource);
dispatcher.forward(slingRequest, slingResponse);
but we get issues.
First off - based on your description it sounds like you want to use
requestDispatcher.include
and notrequestDispatcher.forward
.Concerning the inclusion of the response content, the response which you pass into a
requestDispatcher.include
call could be an object of your own creation which would write its output to a string instead of returning it to the browser. Something along the lines of the following might be appropriate:After the inclusion
outputStream.toString()
should provide the result of the resource request's execution.