You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2022/02/09 16:33:54 UTC
[struts] branch WW-5168-submit-unchecked created (now b1e9eae)
This is an automated email from the ASF dual-hosted git repository.
lukaszlenart pushed a change to branch WW-5168-submit-unchecked
in repository https://gitbox.apache.org/repos/asf/struts.git.
at b1e9eae WW-5168 Support submit unchecked in Javatemplates and fixes logic for all FTL template
This branch includes the following new commits:
new b1e9eae WW-5168 Support submit unchecked in Javatemplates and fixes logic for all FTL template
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[struts] 01/01: WW-5168 Support submit unchecked in Javatemplates and fixes logic for all FTL template
Posted by lu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
lukaszlenart pushed a commit to branch WW-5168-submit-unchecked
in repository https://gitbox.apache.org/repos/asf/struts.git
commit b1e9eae01ca9a33f597a952fd9944f01c68f0f66
Author: Lukasz Lenart <lu...@apache.org>
AuthorDate: Wed Feb 9 17:33:46 2022 +0100
WW-5168 Support submit unchecked in Javatemplates and fixes logic for all FTL template
---
.../org/apache/struts2/components/Checkbox.java | 3 +-
.../struts2/views/java/simple/CheckboxHandler.java | 39 ++++++++++++----------
.../struts2/views/java/simple/CheckboxTest.java | 19 +++++++++++
3 files changed, 43 insertions(+), 18 deletions(-)
diff --git a/core/src/main/java/org/apache/struts2/components/Checkbox.java b/core/src/main/java/org/apache/struts2/components/Checkbox.java
index 591f425..dd853ca 100644
--- a/core/src/main/java/org/apache/struts2/components/Checkbox.java
+++ b/core/src/main/java/org/apache/struts2/components/Checkbox.java
@@ -75,7 +75,8 @@ public class Checkbox extends UIBean {
}
if (submitUnchecked != null) {
- addParameter("submitUnchecked", findValue(submitUnchecked, Boolean.class));
+ Object parsedValue = findValue(submitUnchecked, Boolean.class);
+ addParameter("submitUnchecked", parsedValue == null ? Boolean.valueOf(submitUnchecked) : parsedValue);
} else {
addParameter("submitUnchecked", false);
}
diff --git a/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/CheckboxHandler.java b/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/CheckboxHandler.java
index c712dda..6f0e965 100644
--- a/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/CheckboxHandler.java
+++ b/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/CheckboxHandler.java
@@ -18,13 +18,14 @@
*/
package org.apache.struts2.views.java.simple;
-import org.apache.struts2.views.java.Attributes;
-import org.apache.struts2.views.java.TagGenerator;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.text.StringEscapeUtils;
+import org.apache.struts2.views.java.Attributes;
+import org.apache.struts2.views.java.TagGenerator;
import java.io.IOException;
import java.util.Map;
+import java.util.Objects;
public class CheckboxHandler extends AbstractTagHandler implements TagGenerator {
public void generate() throws IOException {
@@ -35,29 +36,33 @@ public class CheckboxHandler extends AbstractTagHandler implements TagGenerator
String id = (String) params.get("id");
String name = (String) params.get("name");
Object disabled = params.get("disabled");
+ boolean submitUnchecked = Boolean.parseBoolean(Objects.toString(params.get("submitUnchecked"), "false"));
attrs.add("type", "checkbox")
- .add("name", name)
- .add("value", fieldValue)
- .addIfTrue("checked", params.get("nameValue"))
- .addIfTrue("readonly", params.get("readonly"))
- .addIfTrue("disabled", disabled)
- .addIfExists("tabindex", params.get("tabindex"))
- .addIfExists("id", id)
- .addIfExists("class", params.get("cssClass"))
- .addIfExists("style", params.get("cssStyle"))
- .addIfExists("title", params.get("title"));
+ .add("name", name)
+ .add("value", fieldValue)
+ .addIfTrue("checked", params.get("nameValue"))
+ .addIfTrue("readonly", params.get("readonly"))
+ .addIfTrue("disabled", disabled)
+ .addIfExists("tabindex", params.get("tabindex"))
+ .addIfExists("id", id)
+ .addIfExists("class", params.get("cssClass"))
+ .addIfExists("style", params.get("cssStyle"))
+ .addIfExists("title", params.get("title"));
start("input", attrs);
end("input");
- //hidden input
- attrs = new Attributes();
- attrs.add("type", "hidden")
+ if (!submitUnchecked) {
+ //hidden input
+ attrs = new Attributes();
+
+ attrs.add("type", "hidden")
.add("id", "__checkbox_" + StringUtils.defaultString(StringEscapeUtils.escapeHtml4(id)))
.add("name", "__checkbox_" + StringUtils.defaultString(StringEscapeUtils.escapeHtml4(name)))
.add("value", "__checkbox_" + StringUtils.defaultString(StringEscapeUtils.escapeHtml4(fieldValue)))
.addIfTrue("disabled", disabled);
- start("input", attrs);
- end("input");
+ start("input", attrs);
+ end("input");
+ }
}
}
diff --git a/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/CheckboxTest.java b/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/CheckboxTest.java
index 10a8e36..fa7d53a 100644
--- a/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/CheckboxTest.java
+++ b/plugins/javatemplates/src/test/java/org/apache/struts2/views/java/simple/CheckboxTest.java
@@ -45,6 +45,25 @@ public class CheckboxTest extends AbstractCommonAttributesTest {
assertEquals(expected, output);
}
+ public void testRenderUncheckCheckbox() {
+ tag.setName("name_");
+ tag.setDisabled("true");
+ tag.setTabindex("1");
+ tag.setId("id_");
+ tag.setCssClass("class");
+ tag.setCssStyle("style");
+ tag.setTitle("title");
+ tag.setFieldValue("xyz");
+ tag.setSubmitUnchecked("true");
+
+ tag.evaluateParams();
+ map.putAll(tag.getParameters());
+ theme.renderTag(getTagName(), context);
+ String output = writer.getBuffer().toString();
+ String expected = s("<input type='checkbox' name='name_' value='xyz' tabindex='1' id='id_' class='class' style='style' title='title'></input>");
+ assertEquals(expected, output);
+ }
+
public void testRenderCheckboxWithNameValue() {
tag.setName("name_");
tag.setValue("%{someValue}");