You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2013/02/22 11:46:38 UTC

git commit: WICKET-4995 first acquire page to be rendered, then map url for it so we don't have to re-render it afterwards if the url changes in between (because of a pageId for a stateful page)

Updated Branches:
  refs/heads/master cd632a5bf -> 1d2a6c0df


WICKET-4995 first acquire page to be rendered, then map url for
it so we don't have to re-render it afterwards if the url changes in
between (because of a pageId for a stateful page)

Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/1d2a6c0d
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/1d2a6c0d
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/1d2a6c0d

Branch: refs/heads/master
Commit: 1d2a6c0df6b4c4772083268a8ffbca372287cdb5
Parents: cd632a5
Author: svenmeier <sv...@apache.org>
Authored: Fri Feb 22 11:44:08 2013 +0100
Committer: svenmeier <sv...@apache.org>
Committed: Fri Feb 22 11:44:08 2013 +0100

----------------------------------------------------------------------
 .../request/handler/render/WebPageRenderer.java    |   26 +++++---------
 1 files changed, 9 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/1d2a6c0d/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java b/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
index 46ee1b4..2f20845 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
@@ -240,28 +240,20 @@ public class WebPageRenderer extends PageRenderer
 						"matched. Details: " + details);
 			}
 
+			// force creation of possible stateful page to get the final target url
+			getPage();
+
+			Url renderTargetUrl = requestCycle.mapUrlFor(getRenderPageRequestHandler());
+
 			// redirect to buffer
-			BufferedWebResponse response = renderPage(targetUrl, requestCycle);
+			BufferedWebResponse response = renderPage(renderTargetUrl, requestCycle);
 
 			if (response == null)
 			{
 				return;
 			}
 
-			// check if the url hasn't changed after page has been rendered
-			// (i.e. the stateless flag might have changed which could result in different page url)
-			Url targetUrl2 = requestCycle.mapUrlFor(getRenderPageRequestHandler());
-
-			if (targetUrl.getSegments().equals(targetUrl2.getSegments()) == false)
-			{
-				// the amount of segments is different - generated relative URLs will not work, we
-				// need to rerender the page. This shouldn't happen, but in theory it can - with
-				// RequestHandlerEncoders that produce different URLs with different amount of
-				// segments for stateless and stateful pages
-				response = renderPage(targetUrl2, requestCycle);
-			}
-
-			if (currentUrl.equals(targetUrl2))
+			if (currentUrl.equals(renderTargetUrl))
 			{
 				// no need to redirect when both urls are exactly the same
 				response.writeTo((WebResponse)requestCycle.getResponse());
@@ -281,9 +273,9 @@ public class WebPageRenderer extends PageRenderer
 			}
 			else
 			{
-				storeBufferedResponse(targetUrl2, response);
+				storeBufferedResponse(renderTargetUrl, response);
 
-				redirectTo(targetUrl2, requestCycle);
+				redirectTo(renderTargetUrl, requestCycle);
 			}
 		}
 	}