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 <svenme...@apache.org>
Authored: Fri Feb 22 11:44:08 2013 +0100
Committer: svenmeier <svenme...@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);
                        }
                }
        }

Reply via email to