Author: jcompagner Date: Mon May 14 03:28:40 2007 New Revision: 537771 URL: http://svn.apache.org/viewvc?view=rev&rev=537771 Log: relative urls for a bookmarkable request that will do a redirect to a wicket page fix.
Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java?view=diff&rev=537771&r1=537770&r2=537771 ============================================================================== --- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java (original) +++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java Mon May 14 03:28:40 2007 @@ -26,6 +26,7 @@ import org.apache.wicket.Session; import org.apache.wicket.markup.html.pages.BrowserInfoPage; import org.apache.wicket.protocol.http.request.WebClientInfo; +import org.apache.wicket.protocol.http.servlet.ServletWebRequest; import org.apache.wicket.request.ClientInfo; import org.apache.wicket.request.IRequestCycleProcessor; import org.apache.wicket.settings.IRequestCycleSettings; @@ -138,6 +139,13 @@ final WebResponse currentResponse = getWebResponse(); try { + redirectUrl = page.urlFor(IRedirectListener.INTERFACE).toString(); + if (getWebRequest() instanceof ServletWebRequest) + { + // Get the redirect url and set it in the ServletWebRequest + // so that it can be used for relative url calculation. + ((ServletWebRequest)getWebRequest()).setWicketRedirectUrl(redirectUrl.replaceAll("../", "")); + } // create the redirect response. final BufferedHttpServletResponse servletResponse = new BufferedHttpServletResponse( currentResponse.getHttpServletResponse()); @@ -180,7 +188,6 @@ // here on. servletResponse.close(); - redirectUrl = page.urlFor(IRedirectListener.INTERFACE).toString(); int index = redirectUrl.indexOf("?"); String sessionId = getWebRequest().getHttpServletRequest().getSession(true) .getId(); Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java?view=diff&rev=537771&r1=537770&r2=537771 ============================================================================== --- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java (original) +++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java Mon May 14 03:28:40 2007 @@ -53,6 +53,8 @@ private String relativePathPrefixToWicketHandler; private String relativePathPrefixToContextRoot; private Map parameterMap; + + private String wicketRedirectUrl; /** * Protected constructor. @@ -213,7 +215,7 @@ // 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 (errorUrl != null) { // Strip off context path from front of URI. @@ -243,6 +245,10 @@ // Strip off leading slash, if forwardUrl has any length. relativeUrl = forwardUrl.substring(relativeUrl.length() > 0 ? 1 : 0); } + else if (wicketRedirectUrl != null) + { + relativeUrl = wicketRedirectUrl; + } if (depthRelativeToWicketHandler == -1) { @@ -394,5 +400,21 @@ + httpServletRequest.getRequestURI() + ", servletPath = " + httpServletRequest.getServletPath() + ", pathTranslated = " + httpServletRequest.getPathTranslated() + "]"; + } + + /** + * Set the redirect url where wicket will redirect to for the next page + * + * @param wicketRedirectUrl + */ + public void setWicketRedirectUrl(String wicketRedirectUrl) + { + this.wicketRedirectUrl = wicketRedirectUrl; + depthRelativeToWicketHandler = -1; + relativePathPrefixToContextRoot = null; + relativePathPrefixToWicketHandler = null; + + getRequestParameters().setUrlDepth(getDepthRelativeToWicketHandler()); + } }