You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by ad...@apache.org on 2017/08/23 09:26:28 UTC
wicket git commit: WICKET-6455 AjaxFormSubmitBehavior doesn't submit
inner forms
Repository: wicket
Updated Branches:
refs/heads/master 22a421a05 -> 411aa0ee3
WICKET-6455 AjaxFormSubmitBehavior doesn't submit inner forms
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/411aa0ee
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/411aa0ee
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/411aa0ee
Branch: refs/heads/master
Commit: 411aa0ee38d45232f075549bf7212e78a0c626ce
Parents: 22a421a
Author: Andrea Del Bene <ad...@apache.org>
Authored: Wed Aug 23 11:07:40 2017 +0200
Committer: Andrea Del Bene <ad...@apache.org>
Committed: Wed Aug 23 11:24:43 2017 +0200
----------------------------------------------------------------------
.../ajax/form/AjaxFormSubmitBehavior.java | 12 +++-
.../ajax/form/AjaxFormSubmitBehaviorTest.java | 64 ++++++++++++++++++--
2 files changed, 69 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/411aa0ee/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java
index 0700d09..3c0fbbf 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java
@@ -170,7 +170,17 @@ public abstract class AjaxFormSubmitBehavior extends AjaxEventBehavior
@Override
protected void onEvent(final AjaxRequestTarget target)
{
- getForm().getRootForm().onFormSubmitted(new AjaxFormSubmitBehavior.AjaxFormSubmitter(this, target));
+ AjaxFormSubmitBehavior.AjaxFormSubmitter submitter = new AjaxFormSubmitBehavior.AjaxFormSubmitter(this, target);
+ Form<?> form = getForm();
+
+ form.getRootForm().onFormSubmitted(submitter);
+
+ //the target form might have wantSubmitOnParentFormSubmit returning "false"
+ //so it must be explicitly submitted.
+ if (!form.isSubmitted())
+ {
+ form.onFormSubmitted(submitter);
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/wicket/blob/411aa0ee/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehaviorTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehaviorTest.java b/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehaviorTest.java
index 1fe4dad..48f55a9 100644
--- a/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehaviorTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehaviorTest.java
@@ -16,17 +16,20 @@
*/
package org.apache.wicket.ajax.form;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.util.tester.FormTester;
+import org.apache.wicket.util.tester.NestedFormPage;
import org.apache.wicket.util.tester.WicketTestCase;
import org.junit.Test;
-/**
- * Test case for WICKET-1743
- *
- * @see <a href="https://issues.apache.org/jira/browse/WICKET-1743">WICKET-1743</a>
- */
public class AjaxFormSubmitBehaviorTest extends WicketTestCase
{
- /** */
+ /**
+ * Test case for WICKET-1743
+ *
+ * @see <a href="https://issues.apache.org/jira/browse/WICKET-1743">WICKET-1743</a>
+ */
@Test
public void ajaxFormSubmitBehavior()
{
@@ -40,4 +43,53 @@ public class AjaxFormSubmitBehaviorTest extends WicketTestCase
tester.executeAjaxEvent(testForm.getTextField(), "change");
assertTrue(testForm.isSubmitedByAjaxBehavior());
}
+
+ /**
+ * https://issues.apache.org/jira/browse/WICKET-6455
+ */
+ @Test
+ public void innerFormSubmit()
+ {
+ tester.startPage(NestedFormTestPage.class);
+
+ NestedFormTestPage homePage = (NestedFormTestPage)tester.getLastRenderedPage();
+ assertFalse(homePage.innerFormSubmitted);
+
+ FormTester formTester = tester.newFormTester("outer:inner");
+ formTester.submit("submit");
+
+ assertTrue(homePage.innerFormSubmitted);
+ }
+
+ public static class NestedFormTestPage extends NestedFormPage
+ {
+
+ public boolean innerFormSubmitted = false;
+
+ public NestedFormTestPage()
+ {
+ Form<?> outer = new Form("outer");
+ replace(outer);
+
+ Form<?> inner = new Form("inner")
+ {
+ @Override
+ protected boolean wantSubmitOnParentFormSubmit()
+ {
+ return false;
+ }
+
+ @Override
+ protected void onSubmit()
+ {
+ super.onSubmit();
+ innerFormSubmitted = true;
+ }
+ };
+
+ outer.add(inner);
+
+ inner.add(new AjaxButton("submit", inner) {});
+ }
+ }
}
\ No newline at end of file