On Dec 15, 2009, at 12:06 PM, Paul Sandoz wrote:
>>
>> OK. I have just played around with your sample and if i do not
>> register your ExtendedJSPTemplateProcessor and modify Jersey's
>> RequestDispatcherWrapper such that the include methods is
>> implemented as follows:
>>
>> public void include(ServletRequest req, ServletResponse rsp)
>> throws ServletException, IOException {
>> ResolvedViewable rv =
>> (ResolvedViewable
>> )hc
>> .getProperties().get("com.sun.jersey.spi.template.ResolvedViewable");
>>
>> req.setAttribute("httpContext", hc);
>> req.setAttribute("resolvingClass", rv.getResolvingClass());
>> req.setAttribute("it", it);
>> req.setAttribute("_basePath", basePath);
>> req.setAttribute("_request", req);
>> req.setAttribute("_response", rsp);
>> d.include(req,rsp);
>> }
>>
>
> Clarification: the above does not actually require any modification
> because Jersey's JSPTemplateProcessor always calls the forward on
> the dispatcher. Thus some tweaks to the ServletContainer.filter
> method may be all that is required.
>
After debugging, i observed that the ExtendedServletContainer.doFilter
is never called for includes from views. Thus there is something more
fundamental going on. Since the JSPTemplateProcessor calls forward
then perhaps after that it is not possible to include using the JSP
include tag?
In any case from what i can tell one does not have to modify Viewable
to get equivalent behavior for view inclusion as in the example you
provide. But, to get re-entrant inclusion will require a little more
head scratching to work out and still may require a custom tag.
Paul.