mirror of
https://github.com/apache/struts.git
synced 2026-08-05 14:47:09 +00:00
WW-5168 Support submit unchecked in Javatemplates and fixes logic for all FTL template
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
+22
-17
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+19
@@ -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}");
|
||||
|
||||
Reference in New Issue
Block a user