there are two issues that were fixed and relate to the code:
WICKET-1887 and WICKET-2712, in both cases relative urls were not
calculated correctly. the code there now fixes that. please open a new
issue and attach a quickstart.

-igor

On Wed, Sep 29, 2010 at 7:52 AM, Jonathan Gray <[email protected]> wrote:
> hello - we were trying to upgrade from wicket 1.4.10 to wicket 1.4.12
> and ran into a problem in the ServletWebRequest class.  the old code
> was:
>
>               HttpServletRequest httpRequest = getHttpServletRequest();
>
>               // This is in the Servlet 2.3 spec giving us the URI of the
> resource
>               // that caused the error. Unfortunately, this includes the
> context path.
>               String errorUrl =
> (String)httpRequest.getAttribute("javax.servlet.error.request_uri");
>
>               // This gives us a context-relative path for
> RequestDispatcher.forward
>               // stuff, with a leading slash.
>               String forwardUrl =
> (String)httpRequest.getAttribute("javax.servlet.forward.servlet_path");
>
>               if (forwardUrl != null && forwardUrl.length() > 0)
>               {
>                       // If this is an error page, this will be /mount or
> /?wicket:foo
>                       relativeUrl = forwardUrl.substring(1);
>               }
>
> and the new code is:
>
> HttpServletRequest httpRequest = getHttpServletRequest();
>
>               // This is in the Servlet 2.3 spec giving us the URI of the
> resource
>               // that caused the error. Unfortunately, this includes the
> context path.
>               String errorUrl =
> (String)httpRequest.getAttribute("javax.servlet.error.request_uri");
>
>               // This gives us a context-relative path for
> RequestDispatcher.forward
>               // stuff, with a leading slash.
>               String forwardUrl =
> (String)httpRequest.getAttribute("javax.servlet.forward.servlet_path");
>
>               final String filterPath =
> (String)httpServletRequest.getAttribute(WicketFilter.FILTER_PATH_ATTR);
>
>               if (!Strings.isEmpty(forwardUrl))
>               {
>                       // If this is an error page, this will be /mount or
> /?wicket:foo
>                       relativeUrl = forwardUrl.substring(1);
>                       relativeUrl =
> relativeUrl.substring(filterPath.length());
>               }
>
> there is a new filterPath String that is used in the if statement to
> derive a substring from the forwardUrl.  problem is, my forwardUrl is
> /rw and my filter path is /wicket and the substring function fails
> with a StringIndexOutOfBounds exception.  can someone tell me what the
> purpose of this change was and why it might be breaking now?  thanks
> in advance for your input!
>
> - jon
>

Reply via email to