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