Updated Branches:
  refs/heads/master b73a9e576 -> 180b04d7e

WICKET-4636 Using setResponsePage() before page rendering should skip the 
rendering of the page

Get the page before making the check for a scheduled request handler because 
the page's constructor may call setResponsePage()


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

Branch: refs/heads/master
Commit: 180b04d7e92a6f55af9e52dd486cce9d2610ef38
Parents: b73a9e5
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Mon Jul 9 14:08:06 2012 +0300
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Mon Jul 9 14:08:06 2012 +0300

----------------------------------------------------------------------
 .../request/handler/render/WebPageRenderer.java    |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/180b04d7/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 c052c3f..696f12d 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
@@ -16,14 +16,15 @@
  */
 package org.apache.wicket.request.handler.render;
 
+import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
+import 
org.apache.wicket.core.request.handler.RenderPageRequestHandler.RedirectPolicy;
 import org.apache.wicket.protocol.http.BufferedWebResponse;
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.Request;
 import org.apache.wicket.request.Url;
+import org.apache.wicket.request.component.IRequestablePage;
 import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
-import 
org.apache.wicket.core.request.handler.RenderPageRequestHandler.RedirectPolicy;
 import org.apache.wicket.request.http.WebRequest;
 import org.apache.wicket.request.http.WebResponse;
 import org.slf4j.Logger;
@@ -87,6 +88,10 @@ public class WebPageRenderer extends PageRenderer
         */
        protected BufferedWebResponse renderPage(Url targetUrl, RequestCycle 
requestCycle)
        {
+               // get the page before checking for a scheduled request handler 
because
+               // the page may call setResponsePage in its constructor
+               IRequestablePage requestablePage = getPage();
+
                IRequestHandler scheduled = 
requestCycle.getRequestHandlerScheduledAfterCurrent();
 
                if (scheduled != null)
@@ -107,7 +112,7 @@ public class WebPageRenderer extends PageRenderer
                try
                {
                        requestCycle.setResponse(response);
-                       getPage().renderPage();
+                       requestablePage.renderPage();
 
                        if (scheduled == null && 
requestCycle.getRequestHandlerScheduledAfterCurrent() != null)
                        {

Reply via email to