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