Hello all,

I have master jsp page, and I try to jsp:include
page="/strutsAction.do", which forwards to detail jsp page,
but this does not work. On Tomcat 4.x and 5.x the detail
page content is included, but further content from the
master page is stripped out.

According to jsp specs, if I include a resource with
jsp:include, its content should be included in the page.
Afaik the spec does not specify nesting level.

I looked in the code. ApplicationDispatcher correctly
identifies the first request to strutsAction.do as "Path
Based Include". But when struts action forwards to detail
jsp, ApplicationDispatcher identifies it as "Path Based
Forward". doForward() is called instead of doInclude(), and
ApplicationDispatcher flushes and closes the response
writer. Thus, Jasper cannot write the rest of master page
content to writer, and throws
"org.apache.jasper.JasperException: Stream closed".

Without thinking much, I commented out writer flushing in
ApplicationDispatcher.doForward(). It seems to work on
Tomcat 4.1.31, but failed on Tomcat 5.0. Anyway, I am not
sure that I did a right thing and that all buffers are properly being
closed now. Would be great if Tomcat devs look into it.

Btw, Jetty does not work as I want, too. BUT: I tried to create a
"proxy" JSP page, which is included in main JSP page. This proxy page
includes strutsAction.do, which forwards to real JSP page that I want
to include (whew!) Jetty works perfectly fine with this proxy JSP
page!

Also, Resin works fine both with direct including of struts action
from main page, and with proxy JSP page.

So, I believe that this is a Tomcat bug.

Thanks,
   Michael Jouravlev.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to