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 <[email protected]>
Authored: Mon Jan 30 11:44:29 2012 +0200
Committer: Martin Tzvetanov Grigorov <[email protected]>
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>");
                }
 
        }

Reply via email to