You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2013/03/05 15:31:46 UTC

git commit: WICKET-5076 call #onSubmit() on correct forms

Updated Branches:
  refs/heads/wicket-1.5.x 3ed04d05c -> a354b86af


WICKET-5076 call #onSubmit() on correct forms

Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/a354b86a
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/a354b86a
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/a354b86a

Branch: refs/heads/wicket-1.5.x
Commit: a354b86af914783637d2cbbdce0dcbe07154c73a
Parents: 3ed04d0
Author: svenmeier <sv...@apache.org>
Authored: Tue Mar 5 15:31:11 2013 +0100
Committer: svenmeier <sv...@apache.org>
Committed: Tue Mar 5 15:31:11 2013 +0100

----------------------------------------------------------------------
 .../org/apache/wicket/markup/html/form/Form.java   |   27 +++++++++------
 1 files changed, 16 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/a354b86a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
index d41d4ae..31df263 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
@@ -53,6 +53,7 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.settings.IApplicationSettings;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.lang.Bytes;
+import org.apache.wicket.util.lang.Generics;
 import org.apache.wicket.util.string.AppendingStringBuffer;
 import org.apache.wicket.util.string.PrependingStringBuffer;
 import org.apache.wicket.util.string.Strings;
@@ -1213,27 +1214,31 @@ public class Form<T> extends WebMarkupContainer implements IFormSubmitListener
 	{
 		final Form<?> processingForm = findFormToProcess(submittingComponent);
 
-
-		// process submitting component (if specified)
-		if (submittingComponent != null)
-		{
-			// invoke submit on component
-			submittingComponent.onSubmit();
-		}
-
-		// invoke Form#onSubmit(..) going from innermost to outermost
+		// collect all forms innermost to outermost before any hierarchy is changed
+		final List<Form<?>> forms = Generics.newArrayList(3);
 		Visits.visitPostOrder(processingForm, new IVisitor<Form<?>, Void>()
 		{
 			public void component(Form<?> form, IVisit<Void> visit)
 			{
 				if (form.isEnabledInHierarchy() && form.isVisibleInHierarchy())
 				{
-
-					form.onSubmit();
+					forms.add(form);
 				}
 			}
 		}, new ClassVisitFilter(Form.class));
 
+		// process submitting component (if specified)
+		if (submittingComponent != null)
+		{
+			// invoke submit on component
+			submittingComponent.onSubmit();
+		}
+
+		// invoke Form#onSubmit(..)
+		for (Form<?> form : forms)
+		{
+			form.onSubmit();
+		}
 
 		if (submittingComponent != null)
 		{