From: Geoffrey T. <gta...@na...> - 2003-05-22 17:42:51
|
Ian and others, Application.forward() has changed in semantics since the 0.8 release. In 0.8, Application.forward() creates a _new_ Transaction object with a corresponding new Response object. This means that any output before and after the call to Application.forward() is discarded. This lets you, in the middle of processing a request, and after you may have already called self.write(), decide "oops, this isn't right, I need to hand off the request to a completely different servlet and ignore any output so far". You may argue that this is poor coding practice -- I don't really have any argument with that, but I already have code that relies on this behavior. With CVS Head, Application.forward() forwards the existing Transaction and Response to another servlet, causing its output to be included in the output of the original servlet. This seems to be exactly the behavior of Application.includeURL() from Webware 0.8 and presumably also in Webware CVS! So my questions are (probably for Ian because I think he rewrote this): - Did you intentionally change the behavior of Application.forward() or was it an oversight? - Can we restore the old semantics of Application.forward(), perhaps making the current Webware CVS version of Application.forward() into Application.includeURL() since that appears to be what it does? My application cannot be run using Webware CVS because of this change in behavior. - Geoff |