WICKET-5471 Store the page if it is known that it will be used in a following 
request

Better fix.
The page will be touched (i.e. stored). But it won't be initialized unless 
really used because setStatelessHint(false) is called as well.

(cherry picked from commit 3fca3415b46af58591463c7a1c8843c0e9f894ac)


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

Branch: 
refs/heads/sandbox/preserve-page-parameters-and-execute-listener-interface-after-expiration
Commit: a391ff3fe2cf3bbd9aa9afa7b2810df2b0b47d28
Parents: c2b49a6
Author: Martin Tzvetanov Grigorov <mgrigo...@apache.org>
Authored: Wed Jan 15 10:10:27 2014 +0200
Committer: Martin Tzvetanov Grigorov <mgrigo...@apache.org>
Committed: Wed Jan 15 10:12:01 2014 +0200

----------------------------------------------------------------------
 wicket-core/src/main/java/org/apache/wicket/Page.java        | 3 ++-
 .../java/org/apache/wicket/request/cycle/RequestCycle.java   | 8 +++++---
 2 files changed, 7 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/a391ff3f/wicket-core/src/main/java/org/apache/wicket/Page.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Page.java 
b/wicket-core/src/main/java/org/apache/wicket/Page.java
index a58ad9a..6d1dd44 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Page.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Page.java
@@ -965,7 +965,8 @@ public abstract class Page extends MarkupContainer 
implements IRedirectListener,
        {
                setStatelessHint(false);
 
-               internalInitialize();
+               // make sure the page will be available on following request
+               getSession().getPageManager().touchPage(this);
 
                return new PageReference(numericId);
        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/a391ff3f/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java 
b/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
index 3eaed6a..87bdafe 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
@@ -660,10 +660,12 @@ public class RequestCycle implements IRequestCycle, 
IEventSink
        {
                if (page instanceof Page)
                {
-                       Page _page = (Page) page;
-                       _page.setStatelessHint(false);
-                       _page.internalInitialize();
+                       ((Page) page).setStatelessHint(false);
                }
+
+               // make sure the page will be available on following request
+               Session.get().getPageManager().touchPage(page);
+
                scheduleRequestHandlerAfterCurrent(new 
RenderPageRequestHandler(new PageProvider(page),
                        RenderPageRequestHandler.RedirectPolicy.AUTO_REDIRECT));
        }

Reply via email to