You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2012/01/30 10:44:49 UTC
git commit: WICKET-4365 Form components' name/value are encoded in
stateless form's action url
Updated Branches:
refs/heads/wicket-1.5.x c5a12bd56 -> acf47396a
WICKET-4365
Form components' name/value are encoded in stateless form's action url
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/acf47396
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/acf47396
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/acf47396
Branch: refs/heads/wicket-1.5.x
Commit: acf47396abb3c0b9d8a369eeb21d99e31209c41f
Parents: c5a12bd
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Jan 30 11:44:29 2012 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Jan 30 11:44:29 2012 +0200
----------------------------------------------------------------------
.../org/apache/wicket/markup/html/form/Form.java | 4 --
.../wicket/markup/html/form/StatelessForm.java | 32 +++++++++++++
.../wicket/stateless/StatelessFormUrlTest.java | 35 +++++++++++++-
3 files changed, 64 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/acf47396/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 b4ea1e8..3db22c8 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
@@ -790,10 +790,6 @@ public class Form<T> extends WebMarkupContainer implements IFormSubmitListener
*/
public void process(IFormSubmitter submittingComponent)
{
- // save the page in case the component is removed during submit
- final Page page = getPage();
- String hiddenFieldId = getHiddenFieldId();
-
if (!isEnabledInHierarchy() || !isVisibleInHierarchy())
{
// since process() can be called outside of the default form workflow, an additional
http://git-wip-us.apache.org/repos/asf/wicket/blob/acf47396/wicket-core/src/main/java/org/apache/wicket/markup/html/form/StatelessForm.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/StatelessForm.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/StatelessForm.java
index 034519c..2442556 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/StatelessForm.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/StatelessForm.java
@@ -17,6 +17,9 @@
package org.apache.wicket.markup.html.form;
import org.apache.wicket.model.IModel;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.util.visit.IVisit;
+import org.apache.wicket.util.visit.IVisitor;
/**
* This StatelessForm is the same as a normal form but with the statelesshint default to true. The
@@ -72,4 +75,33 @@ public class StatelessForm<T> extends Form<T>
{
return urlFor(IFormSubmitListener.INTERFACE, getPage().getPageParameters());
}
+
+ /**
+ * Remove the page parameters for all form component otherwise they get appended to action URL
+ *
+ * {@inheritDoc}
+ */
+ @Override
+ public void process(IFormSubmitter submittingComponent)
+ {
+ super.process(submittingComponent);
+
+ final PageParameters parameters = getPage().getPageParameters();
+ if (parameters != null)
+ {
+ visitFormComponents(new IVisitor<FormComponent<?>, Void>()
+ {
+ public void component(final FormComponent<?> formComponent, final IVisit<Void> visit)
+ {
+ parameters.remove(formComponent.getInputName());
+ }
+ });
+ parameters.remove(getHiddenFieldId());
+ if (submittingComponent instanceof AbstractSubmitLink)
+ {
+ AbstractSubmitLink submitLink = (AbstractSubmitLink)submittingComponent;
+ parameters.remove(submitLink.getInputName());
+ }
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/acf47396/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessFormUrlTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessFormUrlTest.java b/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessFormUrlTest.java
index bc4eff9..4d868e5 100644
--- a/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessFormUrlTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessFormUrlTest.java
@@ -17,14 +17,20 @@
package org.apache.wicket.stateless;
import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.Page;
import org.apache.wicket.WicketTestCase;
import org.apache.wicket.markup.IMarkupResourceStreamProvider;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.form.StatelessForm;
import org.apache.wicket.markup.html.form.SubmitLink;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.mock.MockApplication;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.StringResourceStream;
+import org.apache.wicket.util.tester.FormTester;
import org.junit.Test;
/**
@@ -32,17 +38,38 @@ import org.junit.Test;
*/
public class StatelessFormUrlTest extends WicketTestCase
{
+ @Override
+ protected WebApplication newApplication()
+ {
+ return new MockApplication() {
+ @Override
+ public Class<? extends Page> getHomePage()
+ {
+ return TestPage.class;
+ }
+ };
+ }
+
/**
* Preventing WICKET-3438
*/
@Test
public void submitLinkInputNameNotEncodedIntoFormAction()
{
- tester.startPage(TestPage.class);
- tester.clickLink("form:submitLink");
+ tester.executeUrl("?0-1.IFormSubmitListener-form&text=newValue&submitLink=x");
assertFalse(tester.getLastResponseAsString().contains("submitLink=x"));
}
+ /**
+ * https://issues.apache.org/jira/browse/WICKET-4365
+ */
+ @Test
+ public void formComponentNameNotEncodedIntoFormAction()
+ {
+ tester.executeUrl("?0-1.IFormSubmitListener-form&text=newValue");
+ assertFalse(tester.getLastResponseAsString().contains("text=newValue"));
+ }
+
/** */
public static class TestPage extends WebPage implements IMarkupResourceStreamProvider
{
@@ -57,6 +84,8 @@ public class StatelessFormUrlTest extends WicketTestCase
super(pageParameters);
StatelessForm<Void> form = new StatelessForm<Void>("form");
add(form);
+ TextField textField = new TextField("text", Model.of("textValue"));
+ form.add(textField);
SubmitLink submitLink = new SubmitLink("submitLink");
form.add(submitLink);
}
@@ -65,7 +94,7 @@ public class StatelessFormUrlTest extends WicketTestCase
Class<?> containerClass)
{
return new StringResourceStream(
- "<html><body><form wicket:id=\"form\"><a wicket:id=\"submitLink\"></a></form></body></html>");
+ "<html><body><form wicket:id=\"form\"><input wicket:id=\"text\"><a wicket:id=\"submitLink\"></a></form></body></html>");
}
}