Personally, I think it's bad design to have an include do a forward and
then expect the forward content to replace the include. A forward, even
from an include, should replace the entire content of the would be
response.
The behavior you are looking for could be done easily (and more cleanly)
with a little jsp logic that essentially chooses to render or perform a
third tier include.
This is purely my opinion though. I'll take the way Tomcat handles the
case over the way Resin and Jetty handle it.
--David
Tim Fennell wrote:
Hi,
I'm wondering what the expected behaviour is when a JSP that is
included from another JSP then forwards to a third JSP? As an example:
- start.jsp
- some content on start.jsp
- _include_ included.jsp
- some content on included.jsp
- _forward_ to forwarded.jsp
- content on forwarded.jsp
- some content (on included.jsp) after the forward
- some content on start.jsp after the include
Does the above example make sense? I was able to dig up this bug
(which was closed INVALID) for Tomcat 4:
http://issues.apache.org/bugzilla/show_bug.cgi?id=12578
I'm using Tomcat 5.5.17 and what happens is that *only* the content on
the inner-most forwarded page is output to the response. Actually -
in my case it's some code deep down in the framework causing
exceptions to be thrown, but I believe it's the same problem as
exhibited by the test case I've put together using three JSPs.
Now, granted, the spec does say that on Forward the response buffer
should be cleared, and after the forward it should be closed. So it's
arguable that Tomcat is doing the right thing. However, I'll point
out that Resin and Jetty 6 both do different things here - so clearly
how a Forward is handled *inside* of an Include is open to a lot of
interpretation. I think the problem is that the specification doesn't
really address the case of a Forward happening nested inside an
Include :/
Personally I feel like the only sensible option (from a user's
perspective) is to treat each include in the manner of a nested
transaction. So in the example above, I would expect the content from
the outer (start.jsp) page to be rendered, along with the content from
the inner most (forwarded.jsp), but that the content from included.jsp
would be omitted in keeping with how the servlet specification defines
the semantics of a Forward.
Are you guys open to discussing how this is handled in Tomcat? Btw.
if this is a dicussion more appropriate for the dev list, just let me
know and I'll post there instead.
-Tim Fennell
http://stripes.mc4j.org/
Stripes: Because web development should just be easier
---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]