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