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