Updated Branches: refs/heads/master 89ec826fd -> 4c1de3267
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/4c1de326 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/4c1de326 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/4c1de326 Branch: refs/heads/master Commit: 4c1de3267485607b7731d5cb858fd6455fcc331e Parents: 89ec826 Author: svenmeier <[email protected]> Authored: Tue Mar 5 15:31:06 2013 +0100 Committer: svenmeier <[email protected]> Committed: Tue Mar 5 15:31:06 2013 +0100 ---------------------------------------------------------------------- .../org/apache/wicket/markup/html/form/Form.java | 31 ++++++++++----- 1 files changed, 21 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/4c1de326/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 25f9136..a7f07f3 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 @@ -55,6 +55,7 @@ import org.apache.wicket.settings.IApplicationSettings; import org.apache.wicket.util.encoding.UrlDecoder; 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; @@ -143,7 +144,10 @@ import org.slf4j.LoggerFactory; * @param <T> * The model object type */ -public class Form<T> extends WebMarkupContainer implements IFormSubmitListener, IGenericComponent<T> +public class Form<T> extends WebMarkupContainer + implements + IFormSubmitListener, + IGenericComponent<T> { private static final String HIDDEN_DIV_START = "<div style=\"width:0px;height:0px;position:absolute;left:-100px;top:-100px;overflow:hidden\">"; @@ -1228,14 +1232,8 @@ 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>() { @Override @@ -1243,11 +1241,24 @@ public class Form<T> extends WebMarkupContainer implements IFormSubmitListener, { 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) { submittingComponent.onAfterSubmit();
