Updated Branches: refs/heads/build/wicket-6.14.0 4a4b3271e -> 401f412dc refs/heads/wicket-6.x 83578b307 -> 9ba9dafee
WICKET-5499 Page is not touched during initialization This is a partial revert of d86d9afa8fc5d21d0d5a1c70e0fcd780ace6e3e6 - don't mark the page as stateful when passed to RenderPageRequestHandler because this breaks the submits of stateless forms Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/93fb6eb2 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/93fb6eb2 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/93fb6eb2 Branch: refs/heads/build/wicket-6.14.0 Commit: 93fb6eb29ee0da6d7e884250c4b5a5f1e72800d9 Parents: 588871d Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Wed Feb 12 15:52:59 2014 +0200 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Wed Feb 12 15:52:59 2014 +0200 ---------------------------------------------------------------------- .../handler/RenderPageRequestHandler.java | 9 +------ .../wicket/request/cycle/RequestCycle.java | 5 ++++ .../EnclosurePageExpectedResult_10-2.html | 5 +++- .../EnclosurePageExpectedResult_10-3.html | 2 +- .../wicket/stateless/StatelessFormTest.java | 25 ++++++++++++++++++++ .../wicket/stateless/StatelessPageWithForm.java | 14 ++++++++++- 6 files changed, 49 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/93fb6eb2/wicket-core/src/main/java/org/apache/wicket/core/request/handler/RenderPageRequestHandler.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/RenderPageRequestHandler.java b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/RenderPageRequestHandler.java index 3cceadd..741427c 100644 --- a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/RenderPageRequestHandler.java +++ b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/RenderPageRequestHandler.java @@ -17,7 +17,6 @@ package org.apache.wicket.core.request.handler; import org.apache.wicket.Application; -import org.apache.wicket.Page; import org.apache.wicket.Session; import org.apache.wicket.core.request.handler.logger.PageLogData; import org.apache.wicket.request.ILoggableRequestHandler; @@ -107,16 +106,10 @@ public class RenderPageRequestHandler if (pageProvider.hasPageInstance()) { - IRequestablePage page = pageProvider.getPageInstance(); - if (page instanceof Page) - { - ((Page) page).setStatelessHint(false); - } - if (Session.exists()) { // WICKET-5499 - Session.get().getPageManager().touchPage(page); + Session.get().getPageManager().touchPage(pageProvider.getPageInstance()); } } } http://git-wip-us.apache.org/repos/asf/wicket/blob/93fb6eb2/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 ae07024..5ae1c23 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 @@ -654,6 +654,11 @@ public class RequestCycle implements IRequestCycle, IEventSink */ public void setResponsePage(IRequestablePage page) { + if (page instanceof Page) + { + ((Page) page).setStatelessHint(false); + } + scheduleRequestHandlerAfterCurrent(new RenderPageRequestHandler(new PageProvider(page), RenderPageRequestHandler.RedirectPolicy.AUTO_REDIRECT)); } http://git-wip-us.apache.org/repos/asf/wicket/blob/93fb6eb2/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-2.html ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-2.html b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-2.html index 2ad7536..382611c 100644 --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-2.html +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-2.html @@ -1,5 +1,8 @@ <html xmlns:wicket> <body> - + <wicket:enclosure child="input"> + <input wicket:id="input" type="checkbox" name="input"/> + <span wicket:id="label"></span> + </wicket:enclosure> </body> </html> http://git-wip-us.apache.org/repos/asf/wicket/blob/93fb6eb2/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-3.html ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-3.html b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-3.html index 6f82c85..382611c 100644 --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-3.html +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-3.html @@ -2,7 +2,7 @@ <body> <wicket:enclosure child="input"> <input wicket:id="input" type="checkbox" name="input"/> - + <span wicket:id="label"></span> </wicket:enclosure> </body> </html> http://git-wip-us.apache.org/repos/asf/wicket/blob/93fb6eb2/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessFormTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessFormTest.java b/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessFormTest.java index 43bab2d..4150d91 100644 --- a/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessFormTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessFormTest.java @@ -103,4 +103,29 @@ public class StatelessFormTest extends WicketTestCase parameters.add("second", "bar"); executeTest(StatelessPageWithForm.class, parameters, "StatelessPageWithForm_expected.html"); } + + /** + * Tests that the session remains temporary (i.e. not bound) after submitting + * stateless form + */ + @Test + public void submitStatelessFormDoesntBindSession() + { + StatelessPageWithForm.FORM_SUBMITTED.set(false); + try + { + tester.startPage(StatelessPageWithForm.class); + tester.assertRenderedPage(StatelessPageWithForm.class); + FormTester form = tester.newFormTester("form"); + assertTrue(tester.getSession().isTemporary()); + form.submit(); + tester.assertRenderedPage(StatelessPageWithForm.class); + assertTrue(StatelessPageWithForm.FORM_SUBMITTED.get()); + assertTrue(tester.getSession().isTemporary()); + } + finally + { + StatelessPageWithForm.FORM_SUBMITTED.set(false); + } + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/93fb6eb2/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessPageWithForm.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessPageWithForm.java b/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessPageWithForm.java index 5252e70..3a819f1 100644 --- a/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessPageWithForm.java +++ b/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessPageWithForm.java @@ -16,6 +16,8 @@ */ package org.apache.wicket.stateless; +import java.util.concurrent.atomic.AtomicBoolean; + import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.form.StatelessForm; import org.apache.wicket.request.mapper.parameter.PageParameters; @@ -27,6 +29,8 @@ public class StatelessPageWithForm extends WebPage { private static final long serialVersionUID = 1L; + static final AtomicBoolean FORM_SUBMITTED = new AtomicBoolean(false); + /** * Construct. * @@ -35,6 +39,14 @@ public class StatelessPageWithForm extends WebPage public StatelessPageWithForm(PageParameters parameters) { super(parameters); - add(new StatelessForm<Void>("form")); + add(new StatelessForm<Void>("form") + { + @Override + protected void onSubmit() + { + super.onSubmit(); + FORM_SUBMITTED.set(true); + } + }); } }
