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

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


The following commit(s) were added to refs/heads/master by this push:
     new 994edf2  WICKET-6760 preserve tag name for nested form placeholder
994edf2 is described below

commit 994edf20a56271e3752007f464e7ee525f6f9aca
Author: Sven Meier <svenme...@apache.org>
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   | 28 ++++++++++-----------
 .../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(+), 16 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 fb5dc22..5da2246 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Component.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Component.java
@@ -2319,7 +2319,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 050264f..c1c437b 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
@@ -1672,16 +1672,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
@@ -1700,17 +1704,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(
-                               String.format("<div id=\"%s\" class=\"%s\" 
data-wicket-placeholder=\"\"></div>",
-                                       getAjaxRegionMarkupId(), 
getString(CssUtils.key(Component.class, "hidden"))));
+                       // 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 856d3f0..fb4c5cf 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
@@ -37,7 +37,26 @@ import org.junit.jupiter.api.Test;
 class NestedFormsTest extends WicketTestCase
 {
        /**
-        *
+        * 
+        */
+       @Test
+       void tagName() throws Exception
+       {
+               tester.executeTest(NestedFormsTest.class, new TestPage(), 
"NestedFormsTest_expected.html");
+
+       }
+
+       /**
+        * WICKET-2166, WICKET-6760
+        */
+       @Test
+       void tagNamePlaceholder() throws Exception
+       {
+               tester.executeTest(NestedFormsTest.class, new 
TestPage().hideInner(), "NestedFormsTest_placeholder_expected.html");
+       }
+
+       /**
+        * 
         */
        @Test
        void postOrderSequenceSubmittingRootForm()
@@ -133,6 +152,14 @@ 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..61396f2
--- /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" 
class="wicket--hidden" data-wicket-placeholder=""></div></form></body></html>
\ No newline at end of file

Reply via email to