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 <[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 | 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