You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jr...@apache.org on 2010/12/16 23:46:18 UTC

svn commit: r1050204 - /wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/WebResponse.java

Author: jrthomerson
Date: Thu Dec 16 22:46:17 2010
New Revision: 1050204

URL: http://svn.apache.org/viewvc?rev=1050204&view=rev
Log:
fixes WICKET-3258 for wicket-1.4.x branch

Modified:
    wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/WebResponse.java

Modified: wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/WebResponse.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/WebResponse.java?rev=1050204&r1=1050203&r2=1050204&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/WebResponse.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/WebResponse.java Thu Dec 16 22:46:17 2010
@@ -247,7 +247,7 @@ public class WebResponse extends Respons
 					}
 					else
 					{
-						httpServletResponse.sendRedirect(url);
+						sendRedirect(url);
 					}
 					redirect = true;
 				}
@@ -264,6 +264,42 @@ public class WebResponse extends Respons
 	}
 
 	/**
+	 * Called when Wicket wants to send a redirect to the servlet response. By default, WebResponse
+	 * just calls <code>httpServletResponse.sendRedirect(url)</code>. However, certain servlet
+	 * containers do not treat relative URL redirects correctly (i.e. WebSphere). If you are using
+	 * one of these containers, you can override this method and convert the relative URL to an
+	 * absolute URL before sending the redirect to the servlet container.
+	 * 
+	 * Example of how to fix this for your buggy container (in your application):
+	 * 
+	 * <pre>
+	 * &#064;Override
+	 * protected WebResponse newWebResponse(HttpServletResponse servletResponse)
+	 * {
+	 * 	return new WebResponse(servletResponse)
+	 * 	{
+	 * 		&#064;Override
+	 * 		public void sendRedirect(String url) throws IOException
+	 * 		{
+	 * 			String reqUrl = ((WebRequest)RequestCycle.get().getRequest()).getHttpServletRequest()
+	 * 				.getRequestURI();
+	 * 			String absUrl = RequestUtils.toAbsolutePath(reqUrl, url);
+	 * 			getHttpServletResponse().sendRedirect(absUrl);
+	 * 		}
+	 * 	};
+	 * }
+	 * </pre>
+	 * 
+	 * @param url
+	 *            the URL to redirect to
+	 * @throws IOException
+	 */
+	protected void sendRedirect(String url) throws IOException
+	{
+		httpServletResponse.sendRedirect(url);
+	}
+
+	/**
 	 * Additional header configs for ajax redirects
 	 */
 	protected void configureAjaxRedirect()