This is an automated email from the ASF dual-hosted git repository.

svenmeier pushed a commit to branch wicket-8.x
in repository https://gitbox.apache.org/repos/asf/wicket.git


The following commit(s) were added to refs/heads/wicket-8.x by this push:
     new 7a60770  WICKET-6760 preserve tag name for nested form placeholder
7a60770 is described below

commit 7a6077008a4f5bef912e5cb585887ed3a857e75e
Author: Sven Meier <[email protected]>
AuthorDate: Wed Mar 18 14:09:26 2020 +0100

    WICKET-6760 preserve tag name for nested form placeholder
    
    if not a <form> tag
---
 .../src/main/java/org/apache/wicket/Component.java |  2 +-
 .../org/apache/wicket/markup/html/form/Form.java   | 33 +++++++++-------------
 .../wicket/markup/html/form/NestedFormsTest.java   | 29 ++++++++++++++++++-
 .../markup/html/form/NestedFormsTest_expected.html |  1 +
 .../form/NestedFormsTest_placeholder_expected.html |  1 +
 5 files changed, 45 insertions(+), 21 deletions(-)

diff --git a/wicket-core/src/main/java/org/apache/wicket/Component.java 
b/wicket-core/src/main/java/org/apache/wicket/Component.java
index effae20..ce7b41a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Component.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Component.java
@@ -2314,7 +2314,7 @@ public abstract class Component
                {
                        if (getFlag(FLAG_PLACEHOLDER))
                        {
-                               renderPlaceholderTag((ComponentTag)elem, 
getResponse());
+                               
renderPlaceholderTag(((ComponentTag)elem).mutable(), getResponse());
                        }
                }
        }
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 5858db4..1416697 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
@@ -1631,16 +1631,20 @@ public class Form<T> extends WebMarkupContainer
                }
                else
                {
-                       // WICKET-6658 form is not allowed, anything else can 
stay as is
-                       if ("form".equalsIgnoreCase(tag.getName()))
-                       {
-                               tag.setName("div");
-                       }
+                       adjustNestedTagName(tag);
                        tag.remove("method");
                        tag.remove("action");
                        tag.remove("enctype");
                }
        }
+       
+       // WICKET-6658 form is not allowed, anything else can stay as is
+       private void adjustNestedTagName(ComponentTag tag) {
+               if ("form".equalsIgnoreCase(tag.getName()))
+               {
+                       tag.setName("div");
+               }
+       }
 
        /**
         * Generates the action url for the form
@@ -1659,22 +1663,13 @@ public class Form<T> extends WebMarkupContainer
        @Override
        protected void renderPlaceholderTag(ComponentTag tag, Response response)
        {
-               if (isRootForm())
+               if (!isRootForm())
                {
-                       super.renderPlaceholderTag(tag, response);
-               }
-               else
-               {
-                       // rewrite inner form tag as div
-                       response.write("<div style=\"display:none\"");
-                       if (getOutputMarkupId())
-                       {
-                               response.write(" id=\"");
-                               response.write(getMarkupId());
-                               response.write("\"");
-                       }
-                       response.write("></div>");
+                       // WICKET-2166
+                       adjustNestedTagName(tag);
                }
+
+               super.renderPlaceholderTag(tag, response);
        }
 
        /**
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 6b5b8c4..a3ae1be 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
@@ -35,7 +35,26 @@ import org.junit.Test;
 public class NestedFormsTest extends WicketTestCase
 {
        /**
-        *
+        * 
+        */
+       @Test
+       public void tagName() throws Exception
+       {
+               tester.executeTest(NestedFormsTest.class, new TestPage(), 
"NestedFormsTest_expected.html");
+
+       }
+
+       /**
+        * WICKET-2166, WICKET-6760
+        */
+       @Test
+       public void tagNamePlaceholder() throws Exception
+       {
+               tester.executeTest(NestedFormsTest.class, new 
TestPage().hideInner(), "NestedFormsTest_placeholder_expected.html");
+       }
+
+       /**
+        * 
         */
        @Test
        public void postOrderSequenceSubmittingRootForm()
@@ -131,6 +150,14 @@ public class NestedFormsTest extends WicketTestCase
                        innerForm.add(innerSubmit);
                }
 
+               public TestPage hideInner()
+               {
+                       innerForm.setOutputMarkupPlaceholderTag(true);
+                       innerForm.setVisible(false);
+                       
+                       return this;
+               }
+
                @Override
                public IResourceStream getMarkupResourceStream(MarkupContainer 
container,
                        Class<?> containerClass)
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormsTest_expected.html
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormsTest_expected.html
new file mode 100644
index 0000000..129a3be
--- /dev/null
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormsTest_expected.html
@@ -0,0 +1 @@
+<html><body><form wicket:id="outerForm" id="outerForm1" method="post" 
action="./page?0-1.-outerForm">  <input type="submit" wicket:id="outerSubmit" 
name="outerSubmit" id="outerSubmit2"/>  <div wicket:id="innerForm" 
id="innerForm3"><input type="submit" wicket:id="innerSubmit" 
name="innerForm:innerSubmit" id="innerSubmit4"/></div></form></body></html>
\ No newline at end of file
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormsTest_placeholder_expected.html
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormsTest_placeholder_expected.html
new file mode 100644
index 0000000..51d8a4b
--- /dev/null
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormsTest_placeholder_expected.html
@@ -0,0 +1 @@
+<html><body><form wicket:id="outerForm" id="outerForm1" method="post" 
action="./page?0-1.-outerForm">  <input type="submit" wicket:id="outerSubmit" 
name="outerSubmit" id="outerSubmit2"/>  <div id="innerForm3" 
style="display:none" data-wicket-placeholder=""></div></form></body></html>
\ No newline at end of file

Reply via email to