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) {
