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); } } }