Oops sorry, I forgot to reference the issue in the commit description !! :/
On Tue, Apr 21, 2015 at 10:56 PM, <[email protected]> wrote: > Added Form#wantSubmitOnParentFormSubmit & UnitTest > > > Project: http://git-wip-us.apache.org/repos/asf/wicket/repo > Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/849cdc2b > Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/849cdc2b > Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/849cdc2b > > Branch: refs/heads/master > Commit: 849cdc2ba76093b61a623da75b6999d575c77b4b > Parents: de7e6fe > Author: Sebastien Briquet <[email protected]> > Authored: Tue Apr 21 14:37:19 2015 +0200 > Committer: Sebastien <[email protected]> > Committed: Tue Apr 21 22:46:16 2015 +0200 > > ---------------------------------------------------------------------- > .../apache/wicket/markup/html/form/Form.java | 35 +++++++---- > .../markup/html/form/NestedFormSubmitTest.java | 64 +++++++++++++------- > 2 files changed, 64 insertions(+), 35 deletions(-) > ---------------------------------------------------------------------- > > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/849cdc2b/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 a871f1e..f3fdbb8 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 > @@ -895,11 +895,23 @@ public class Form<T> extends WebMarkupContainer > * > * @return Whether this form wants to be submitted too if a nested > form is submitted. > */ > - public boolean wantSubmitOnNestedFormSubmit() > + // TODO wicket-7 migration guide: changed from public to protected > + protected boolean wantSubmitOnNestedFormSubmit() > { > return false; > } > > + /** > + * Whether this *nested* form wants to be submitted when parent > form is submitted. By default, > + * this is true, so when a parent form is submitted, the nested > form is also submitted. If this > + * method is overridden to return false, it will not be validated, > processed nor submitted. > + * > + * @return {@code true} by default > + */ > + protected boolean wantSubmitOnParentFormSubmit() > + { > + return true; > + } > > /** > * Process the form. Though you can override this method to > provide your own algorithm, it is > @@ -1011,7 +1023,8 @@ public class Form<T> extends WebMarkupContainer > public void component(final Component component, > final IVisit<Void> visit) > { > Form<?> form = (Form<?>)component; > - if (form.isEnabledInHierarchy() && > isVisibleInHierarchy()) > + if (form.isEnabledInHierarchy() && > form.isVisibleInHierarchy() && > + > form.wantSubmitOnParentFormSubmit()) > { > form.setFlag(FLAG_SUBMITTED, true); > return; > @@ -1280,7 +1293,7 @@ public class Form<T> extends WebMarkupContainer > @Override > public void component(Form<?> form, IVisit<Void> > visit) > { > - if (form.isEnabledInHierarchy() && > form.isVisibleInHierarchy()) > + if (form.isSubmitted()) > { > forms.add(form); > } > @@ -1525,7 +1538,7 @@ public class Form<T> extends WebMarkupContainer > @Override > public void component(final Form<?> form, final > IVisit<Void> visit) > { > - if (form.isEnabledInHierarchy() && > form.isVisibleInHierarchy()) > + if (form.isSubmitted()) > { > > form.internalMarkFormComponentsValid(); > } > @@ -1692,7 +1705,7 @@ public class Form<T> extends WebMarkupContainer > super.onComponentTagBody(markupStream, openTag); > } > > - /* > + /** > * Writes the markup for the hidden input field and default button > field if applicable to the > * current response. > */ > @@ -1829,10 +1842,9 @@ public class Form<T> extends WebMarkupContainer > @Override > public void component(final Form<?> form, final > IVisit<Void> visit) > { > - if (form.isEnabledInHierarchy() && > form.isVisibleInHierarchy()) > + if (form.isSubmitted()) > { > > form.internalUpdateFormComponentModels(); > - > } > else > { > @@ -1891,11 +1903,11 @@ public class Form<T> extends WebMarkupContainer > visitChildren(Form.class, new IVisitor<Form<?>, Void>() > { > @Override > - public void component(Form<?> nestedForm, > IVisit<Void> visit) > + public void component(Form<?> form, IVisit<Void> > visit) > { > - if (nestedForm.isEnabledInHierarchy() && > nestedForm.isVisibleInHierarchy()) > + if (form.isSubmitted()) > { > - > nestedForm.onValidateModelObjects(); > + form.onValidateModelObjects(); > } > else > { > @@ -2037,7 +2049,7 @@ public class Form<T> extends WebMarkupContainer > return; > } > > - if (form.isEnabledInHierarchy() && > form.isVisibleInHierarchy()) > + if (form.isSubmitted()) > { > form.validateComponents(); > form.validateFormValidators(); > @@ -2047,7 +2059,6 @@ public class Form<T> extends WebMarkupContainer > }, new ClassVisitFilter(Form.class)); > } > > - > /** > * Allows to customize input names of form components inside this > form. > * > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/849cdc2b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormSubmitTest.java > ---------------------------------------------------------------------- > diff --git > a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormSubmitTest.java > b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormSubmitTest.java > index c325f1f..b7c4417 100644 > --- > a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormSubmitTest.java > +++ > b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormSubmitTest.java > @@ -33,12 +33,15 @@ public class NestedFormSubmitTest extends > WicketTestCase > private final IModel<Boolean> submitted; > private final Button submit; > private final boolean wantInclusion; > + private final boolean wantExclusion; > > - TestForm(String id, IModel<Boolean> submitted, boolean > wantInclusion) > + TestForm(String id, IModel<Boolean> submitted, boolean > wantInclusion, boolean wantExclusion) > { > super(id); > this.submitted = submitted; > this.wantInclusion = wantInclusion; > + this.wantExclusion = wantExclusion; > + > submit = new Button("submit"); > add(submit); > } > @@ -55,23 +58,30 @@ public class NestedFormSubmitTest extends > WicketTestCase > { > return wantInclusion; > } > + > + @Override > + public boolean wantSubmitOnParentFormSubmit() > + { > + return wantExclusion; > + } > } > > public class TestPage extends WebPage > { > - private final TestForm outer; > - private final TestForm middle; > - private final TestForm inner; > + private final TestForm<?> outer; > + private final TestForm<?> middle; > + private final TestForm<?> inner; > > public TestPage(IModel<Boolean> submittedOuter, boolean > outerWantsInclusion, > IModel<Boolean> submittedMiddle, boolean > middleWantsInclusion, > - IModel<Boolean> submittedInner) > + boolean middleWantsExclusion, IModel<Boolean> > submittedInner) > { > - outer = new TestForm("outer", submittedOuter, > outerWantsInclusion); > + outer = new TestForm<Void>("outer", > submittedOuter, outerWantsInclusion, true); > this.add(outer); > - middle = new TestForm("middle", submittedMiddle, > middleWantsInclusion); > + middle = new TestForm<Void>("middle", > submittedMiddle, middleWantsInclusion, > + middleWantsExclusion); > outer.add(middle); > - inner = new TestForm("inner", submittedInner, > false); > + inner = new TestForm<Void>("inner", > submittedInner, false, true); > middle.add(inner); > } > } > @@ -97,13 +107,6 @@ public class NestedFormSubmitTest extends > WicketTestCase > submittedOuter.setObject(false); > } > > - @Test > - public void testDefaultOuterSubmitShouldSubmitAll() throws > Exception > - { > - startPage(false, false); > - assertFormSubmitOuter(true, true, true); > - } > - > private void assertFormSubmitOuter(boolean expectSubmittedOuter, > boolean expectSubmittedMiddle, > boolean expectSubmittedInner) > { > @@ -137,37 +140,44 @@ public class NestedFormSubmitTest extends > WicketTestCase > } > > @Test > + public void testDefaultOuterSubmitShouldSubmitAll() throws > Exception > + { > + startPage(false, false, true); > + assertFormSubmitOuter(true, true, true); > + } > + > + @Test > public void testDefaultMiddleSubmitShouldSubmitMiddleAndInner() > throws Exception > { > - startPage(false, false); > + startPage(false, false, true); > assertFormSubmitMiddle(false, true, true); > } > > @Test > public void testDefaultInnerSubmitShouldSubmitOnlyInner() throws > Exception > { > - startPage(false, false); > + startPage(false, false, true); > assertFormSubmitInner(false, false, true); > } > > @Test > public void testWithOuterInclusionOuterIsSubmittedOnMiddleSubmit() > throws Exception > { > - startPage(true, false); > + startPage(true, false, true); > assertFormSubmitMiddle(true, true, true); > } > > @Test > public void testWithOuterInclusionOuterIsSubmittedOnInnerSubmit() > throws Exception > { > - startPage(true, false); > + startPage(true, false, true); > assertFormSubmitInner(true, true, true); > } > > @Test > public void > testWithMiddleInclusionMiddleIsSubmittedOnInnerSubmit() throws Exception > { > - startPage(false, true); > + startPage(false, true, true); > assertFormSubmitInner(false, true, true); > } > > @@ -175,13 +185,21 @@ public class NestedFormSubmitTest extends > WicketTestCase > public void > testWithMiddleAndOuterInclusionMiddleAndOuterIsSubmittedOnInnerSubmit() > throws Exception > { > - startPage(true, true); > + startPage(true, true, true); > assertFormSubmitInner(true, true, true); > } > > - private void startPage(boolean outerWantsInclusion, boolean > middleWantsInclusion) > + @Test > + public void testWithMiddleExclusionAndOuterIsSubmitted() throws > Exception > + { > + startPage(false, false, false); > + assertFormSubmitOuter(true, false, false); > + } > + > + private void startPage(boolean outerWantsInclusion, boolean > middleWantsInclusion, > + boolean middleWantsExclusion) > { > page = (TestPage)tester.startPage(new > TestPage(submittedOuter, outerWantsInclusion, > - submittedMiddle, middleWantsInclusion, > submittedInner)); > + submittedMiddle, middleWantsInclusion, > middleWantsExclusion, submittedInner)); > } > } > >
