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 2016/12/06 13:30:08 UTC
wicket git commit: WICKET-6292 revert WICKET-6041 - should not access
parameters before handling multipart
Repository: wicket
Updated Branches:
refs/heads/master b8e1d5ce8 -> 3824853be
WICKET-6292 revert WICKET-6041 - should not access parameters before handling multipart
This reverts commit ba393ffa2bf6480d4981e4b48c7aa6a19bd5b9c6.
This reverts commit ece7575f5ea74ec27f88618fd287e4348aa9cc35.
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/3824853b
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/3824853b
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/3824853b
Branch: refs/heads/master
Commit: 3824853be87af927dcde0b9cc6761f59738051a9
Parents: b8e1d5c
Author: Sven Meier <sv...@apache.org>
Authored: Tue Dec 6 12:46:17 2016 +0100
Committer: Sven Meier <sv...@apache.org>
Committed: Tue Dec 6 14:29:21 2016 +0100
----------------------------------------------------------------------
.../apache/wicket/markup/html/form/Form.java | 91 +++++++++-----------
.../markup/html/form/NestedFormsTest.java | 79 -----------------
2 files changed, 41 insertions(+), 129 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/3824853b/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 a197dd8..e8b61e7 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
@@ -24,6 +24,8 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
+import javax.servlet.http.HttpServletRequest;
+
import org.apache.commons.fileupload.FileUploadBase;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.wicket.Component;
@@ -70,8 +72,6 @@ import org.apache.wicket.util.visit.Visits;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.servlet.http.HttpServletRequest;
-
/**
* Container for {@link FormComponent}s (such as {@link CheckBox}es, {@link ListChoice}s or
@@ -739,15 +739,10 @@ public class Form<T> extends WebMarkupContainer
*
* @see Form#validate()
*/
- public final void onFormSubmitted(final IFormSubmitter submitter)
+ public final void onFormSubmitted(IFormSubmitter submitter)
{
- final IFormSubmitter actualSubmitter = submitter != null ? submitter :
- findActualSubmitter();
- //find the actual form to process
- final Form<?> formToProcess = findFormToProcess(actualSubmitter);
-
- formToProcess.markFormsSubmitted();
-
+ markFormsSubmitted();
+
if (handleMultiPart())
{
// Tells FormComponents that a new user input has come
@@ -762,19 +757,49 @@ public class Form<T> extends WebMarkupContainer
}
else
{
+ // First, see if the processing was triggered by a Wicket IFormSubmittingComponent
+ if (submitter == null)
+ {
+ submitter = findSubmittingButton();
+
+ if (submitter instanceof IFormSubmittingComponent)
+ {
+ IFormSubmittingComponent submittingComponent = (IFormSubmittingComponent)submitter;
+ Component component = (Component)submitter;
+
+ if (!component.isVisibleInHierarchy())
+ {
+ throw new WicketRuntimeException("Submit Button " +
+ submittingComponent.getInputName() + " (path=" +
+ component.getPageRelativePath() + ") is not visible");
+ }
+
+ if (!component.isEnabledInHierarchy())
+ {
+ throw new WicketRuntimeException("Submit Button " +
+ submittingComponent.getInputName() + " (path=" +
+ component.getPageRelativePath() + ") is not enabled");
+ }
+ }
+ }
+
// When processing was triggered by a Wicket IFormSubmittingComponent and that
// component indicates it wants to be called immediately
// (without processing), call the IFormSubmittingComponent.onSubmit* methods right
// away.
- if (actualSubmitter != null && !actualSubmitter.getDefaultFormProcessing())
+ if (submitter != null && !submitter.getDefaultFormProcessing())
{
- actualSubmitter.onSubmit();
- actualSubmitter.onAfterSubmit();
+ submitter.onSubmit();
+ submitter.onAfterSubmit();
}
else
{
+ // the submit request might be for one of the nested forms, so let's
+ // find the right one:
+ final Form<?> formToProcess = findFormToProcess(submitter);
+
// process the form for this request
- formToProcess.process(actualSubmitter);
+ formToProcess.process(submitter);
}
}
}
@@ -782,7 +807,7 @@ public class Form<T> extends WebMarkupContainer
// onError
else if (hasError())
{
- callOnError(actualSubmitter);
+ callOnError(submitter);
}
// update auto labels if we are inside an ajax request
@@ -797,41 +822,6 @@ public class Form<T> extends WebMarkupContainer
});
});
}
-
- /**
- * Find the actual submitter for this form. If such component
- * is found but it's not enabled or visible, an exception is thrown.
- *
- * @return the actual submitter
- */
- private IFormSubmitter findActualSubmitter()
- {
- IFormSubmitter actualSubmitter = findSubmittingButton();
-
- if (actualSubmitter instanceof IFormSubmittingComponent)
- {
- IFormSubmittingComponent submittingComponent = (IFormSubmittingComponent)actualSubmitter;
- Component component = (Component)actualSubmitter;
-
- if (!component.isVisibleInHierarchy())
- {
- throw new WicketRuntimeException("Submit Button " +
- submittingComponent.getInputName() + " (" +
- component.toString(true) +
- ") is not visible");
- }
-
- if (!component.isEnabledInHierarchy())
- {
- throw new WicketRuntimeException("Submit Button " +
- submittingComponent.getInputName() + " (" +
- component.toString(true) +
- ") is not enabled");
- }
- }
-
- return actualSubmitter;
- }
/**
* This method finds the correct form that should be processed based on the submitting component
@@ -910,6 +900,7 @@ public class Form<T> extends WebMarkupContainer
*
* @return Whether this form wants to be submitted too if a nested form is submitted.
*/
+ // TODO wicket-7 migration guide: changed from public to protected
protected boolean wantSubmitOnNestedFormSubmit()
{
return false;
http://git-wip-us.apache.org/repos/asf/wicket/blob/3824853b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormsTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormsTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormsTest.java
index 5090e24..6b5b8c4 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormsTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormsTest.java
@@ -21,7 +21,6 @@ import java.util.List;
import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.markup.IMarkupResourceStreamProvider;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.util.resource.IResourceStream;
@@ -65,85 +64,7 @@ public class NestedFormsTest extends WicketTestCase
assertEquals(0, testPage.submitSequence.indexOf(testPage.innerSubmit));
assertEquals(1, testPage.submitSequence.indexOf(testPage.innerForm));
}
-
- @SuppressWarnings("unchecked")
- @Test
- public void subitInnerFormWithAjaxBehavior()
- {
- tester.startPage(TestAjaxPage.class);
- FormTester formTester = tester.newFormTester("formA");
- formTester.submit("formB:submit");
-
- TestAjaxPage testPage = (TestAjaxPage)tester.getLastRenderedPage();
-
- assertFalse(testPage.isFormAsubmitted());
- assertTrue(testPage.isFormBsubmitted());
- }
-
- public static class TestAjaxPage extends WebPage implements IMarkupResourceStreamProvider
- {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private boolean formAsubmitted;
- private boolean formBsubmitted;
-
- public TestAjaxPage()
- {
- final Form<Void> formA = new Form<Void>("formA")
- {
- @Override
- public void onDetach()
- {
- formAsubmitted = isSubmitted();
- super.onDetach();
- }
- };
- final Form<Void> formB = new Form<Void>("formB")
- {
- @Override
- protected void onDetach()
- {
- formBsubmitted = isSubmitted();
- super.onDetach();
- }
- };
-
- formB.add(new AjaxButton("submit")
- {
- private static final long serialVersionUID = 1L;
- });
-
- formA.add(formB);
- add(formA);
- }
-
- @Override
- public IResourceStream getMarkupResourceStream(MarkupContainer container,
- Class<?> containerClass)
- {
- return new StringResourceStream(
- "<head></head>" +
- "<form wicket:id=\"formA\">\r\n" +
- " Form A\r\n" +
- " <form wicket:id=\"formB\">\r\n" +
- " Form B\r\n" +
- " <button wicket:id=\"submit\">submit</button>\r\n" +
- " </form>\r\n" +
- " </form>");
- }
-
- public boolean isFormAsubmitted() {
- return formAsubmitted;
- }
-
- public boolean isFormBsubmitted() {
- return formBsubmitted;
- }
- }
-
/** */
public static class TestPage extends WebPage implements IMarkupResourceStreamProvider
{