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 <[email protected]>
Authored: Tue Mar 5 15:31:11 2013 +0100
Committer: svenmeier <[email protected]>
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)
                {

Reply via email to