View that redirects to an absolute, context relative, or current request
relative URL, exposing all model attributes as HTTP query parameters.
A URL for this view is supposed to be a HTTP redirect URL, i.e.
suitable for HttpServletResponse's sendRedirect
method, which
is what actually does the redirect if the HTTP 1.0 flag is on, or via sending
back an HTTP 303 code - if the HTTP 1.0 compatibility flag is off.
Note that while the default value for the "contextRelative" flag is off,
you will probably want to almost always set it to true. With the flag off,
URLs starting with "/" are considered relative to the web server root, while
with the flag on, they are considered relative to the web application root.
Since most web apps will never know or care what their context path actually
is, they are much better off setting this flag to true, and submitting paths
which are to be considered relative to the web application root.
Note that in a Servlet 2.2 environment, i.e. a servlet container which
is only compliant to the limits of this spec, this class will probably fail
when feeding in URLs which are not fully absolute, or relative to the current
request (no leading "/"), as these are the only two types of URL that
sendRedirect
supports in a Servlet 2.2 environment.
This class was borrowed from a nearly identical version found in
the Spring Framework, with minor modifications to
avoid a dependency on Spring itself for a very small amount of code - we couldn't have done it better, and
don't want to repeat all of their great effort ;).
The original author names and copyright (Apache 2.0) has been left in place. A special
thanks to Rod Johnson, Juergen Hoeller, and Colin Sampaleanu for making this available.