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 <[email protected]>
Authored: Wed Aug 23 11:07:40 2017 +0200
Committer: Andrea Del Bene <[email protected]>
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

Reply via email to