mirror of
https://github.com/apache/struts.git
synced 2026-08-11 01:27:14 +00:00
Make we sure we handle doubles/longs correctly, for class cast
exception.
This commit is contained in:
+101
-84
@@ -33,106 +33,123 @@ import java.io.IOException;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
public class CheckboxListHandler extends AbstractTagHandler implements TagGenerator {
|
||||
public void generate() throws IOException {
|
||||
public class CheckboxListHandler extends AbstractTagHandler implements
|
||||
TagGenerator {
|
||||
public void generate() throws IOException {
|
||||
|
||||
Map<String, Object> params = context.getParameters();
|
||||
Map<String, Object> params = context.getParameters();
|
||||
|
||||
// Get parameters
|
||||
Object listObj = params.get("list");
|
||||
String listKey = (String) params.get("listKey");
|
||||
String listValue = (String) params.get("listValue");
|
||||
String name = (String) params.get("name");
|
||||
Object disabled = params.get("disabled");
|
||||
String id = (String) params.get("id");
|
||||
// Get parameters
|
||||
Object listObj = params.get("list");
|
||||
String listKey = (String) params.get("listKey");
|
||||
String listValue = (String) params.get("listValue");
|
||||
String name = (String) params.get("name");
|
||||
Object disabled = params.get("disabled");
|
||||
String id = (String) params.get("id");
|
||||
|
||||
int cnt = 1;
|
||||
int cnt = 1;
|
||||
|
||||
// This will interate through all lists
|
||||
ValueStack stack = this.context.getStack();
|
||||
if (listObj != null) {
|
||||
Iterator itt = MakeIterator.convert(listObj);
|
||||
while (itt.hasNext()) {
|
||||
Object item = itt.next();
|
||||
stack.push(item);
|
||||
// This will interate through all lists
|
||||
ValueStack stack = this.context.getStack();
|
||||
if (listObj != null) {
|
||||
Iterator itt = MakeIterator.convert(listObj);
|
||||
while (itt.hasNext()) {
|
||||
Object item = itt.next();
|
||||
stack.push(item);
|
||||
|
||||
// key
|
||||
Object itemKey = findValue(listKey != null ? listKey : "top");
|
||||
String itemKeyStr = StringUtils.defaultString(itemKey == null ? null : itemKey.toString());
|
||||
// key
|
||||
Object itemKey = findValue(listKey != null ? listKey : "top");
|
||||
String itemKeyStr = StringUtils
|
||||
.defaultString(itemKey == null ? null : itemKey
|
||||
.toString());
|
||||
|
||||
// value
|
||||
Object itemValue = findValue(listValue != null ? listValue : "top");
|
||||
String itemValueStr = StringUtils.defaultString(itemValue == null ? null : itemValue.toString());
|
||||
// value
|
||||
Object itemValue = findValue(listValue != null ? listValue
|
||||
: "top");
|
||||
String itemValueStr = StringUtils
|
||||
.defaultString(itemValue == null ? null : itemValue
|
||||
.toString());
|
||||
|
||||
// Checkbox button section
|
||||
Attributes a = new Attributes();
|
||||
a.add("type", "checkbox").add("name", name).add("value", itemKeyStr)
|
||||
.addIfTrue("checked", isChecked(params, itemKeyStr))
|
||||
.addIfTrue("readonly", params.get("readonly")).addIfTrue("disabled", disabled)
|
||||
.addIfExists("tabindex", params.get("tabindex"))
|
||||
.addIfExists("id", id + "-" + Integer.toString(cnt));
|
||||
start("input", a);
|
||||
end("input");
|
||||
// Checkbox button section
|
||||
Attributes a = new Attributes();
|
||||
a.add("type", "checkbox").add("name", name)
|
||||
.add("value", itemKeyStr)
|
||||
.addIfTrue("checked", isChecked(params, itemKeyStr))
|
||||
.addIfTrue("readonly", params.get("readonly"))
|
||||
.addIfTrue("disabled", disabled)
|
||||
.addIfExists("tabindex", params.get("tabindex"))
|
||||
.addIfExists("id", id + "-" + Integer.toString(cnt));
|
||||
start("input", a);
|
||||
end("input");
|
||||
|
||||
// Label section
|
||||
a = new Attributes();
|
||||
a.add("for", id + "-" + Integer.toString(cnt)).addIfExists("class", params.get("cssClass"))
|
||||
.addIfExists("style", params.get("cssStyle"));
|
||||
super.start("label", a);
|
||||
if (StringUtils.isNotEmpty(itemValueStr))
|
||||
characters(itemValueStr);
|
||||
super.end("label");
|
||||
// Label section
|
||||
a = new Attributes();
|
||||
a.add("for", id + "-" + Integer.toString(cnt))
|
||||
.addIfExists("class", params.get("cssClass"))
|
||||
.addIfExists("style", params.get("cssStyle"));
|
||||
super.start("label", a);
|
||||
if (StringUtils.isNotEmpty(itemValueStr))
|
||||
characters(itemValueStr);
|
||||
super.end("label");
|
||||
|
||||
// Hidden input section
|
||||
a = new Attributes();
|
||||
a.add("type", "hidden")
|
||||
.add("id", "__multiselect_" + StringUtils.defaultString(StringEscapeUtils.escapeHtml4(id)))
|
||||
.add("name", "__multiselect_" + StringUtils.defaultString(StringEscapeUtils.escapeHtml4(name)))
|
||||
.add("value", "").addIfTrue("disabled", disabled);
|
||||
start("input", a);
|
||||
end("input");
|
||||
// Hidden input section
|
||||
a = new Attributes();
|
||||
a.add("type", "hidden")
|
||||
.add("id",
|
||||
"__multiselect_"
|
||||
+ StringUtils
|
||||
.defaultString(StringEscapeUtils
|
||||
.escapeHtml4(id)))
|
||||
.add("name",
|
||||
"__multiselect_"
|
||||
+ StringUtils
|
||||
.defaultString(StringEscapeUtils
|
||||
.escapeHtml4(name)))
|
||||
.add("value", "").addIfTrue("disabled", disabled);
|
||||
start("input", a);
|
||||
end("input");
|
||||
|
||||
stack.pop();
|
||||
cnt++;
|
||||
}
|
||||
}
|
||||
}
|
||||
stack.pop();
|
||||
cnt++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* It's set to true if the nameValue (the value associated with the name
|
||||
* which is typically set in the action is equal to the current key value.
|
||||
*
|
||||
* @param params
|
||||
* the params
|
||||
*
|
||||
* @param itemKeyStr
|
||||
* the item key str
|
||||
*
|
||||
* @return the boolean
|
||||
*/
|
||||
private Boolean isChecked(Map<String, Object> params, String itemKeyStr) {
|
||||
Boolean checked = false;
|
||||
if (itemKeyStr != null) {
|
||||
/**
|
||||
* It's set to true if the nameValue (the value associated with the name
|
||||
* which is typically set in the action is equal to the current key value.
|
||||
*
|
||||
* @param params
|
||||
* the params
|
||||
*
|
||||
* @param itemKeyStr
|
||||
* the item key str
|
||||
*
|
||||
* @return the boolean
|
||||
*/
|
||||
private Boolean isChecked(Map<String, Object> params, String itemKeyStr) {
|
||||
Boolean checked = false;
|
||||
if (itemKeyStr != null) {
|
||||
|
||||
// NameValue are the values that is provided by the name property
|
||||
// in the action
|
||||
Object nameValue = params.get("nameValue");
|
||||
// NameValue are the values that is provided by the name property
|
||||
// in the action
|
||||
Object nameValue = params.get("nameValue");
|
||||
|
||||
if (nameValue != null) {
|
||||
if (nameValue != null) {
|
||||
|
||||
Iterator itt = MakeIterator.convert(nameValue);
|
||||
while (itt.hasNext()) {
|
||||
Iterator itt = MakeIterator.convert(nameValue);
|
||||
while (itt.hasNext()) {
|
||||
|
||||
String value = (String) itt.next();
|
||||
if (checked = value.equalsIgnoreCase(itemKeyStr)) {
|
||||
break;
|
||||
}
|
||||
String value = itt.next().toString();
|
||||
if (checked = value.equalsIgnoreCase(itemKeyStr)) {
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return checked;
|
||||
}
|
||||
}
|
||||
}
|
||||
return checked;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+80
-70
@@ -34,89 +34,99 @@ import java.util.Map;
|
||||
|
||||
public class RadioHandler extends AbstractTagHandler implements TagGenerator {
|
||||
|
||||
public void generate() throws IOException {
|
||||
Map<String, Object> params = context.getParameters();
|
||||
public void generate() throws IOException {
|
||||
Map<String, Object> params = context.getParameters();
|
||||
|
||||
Object listObj = params.get("list");
|
||||
String listKey = (String) params.get("listKey");
|
||||
String listValue = (String) params.get("listValue");
|
||||
int cnt = 0;
|
||||
Object listObj = params.get("list");
|
||||
String listKey = (String) params.get("listKey");
|
||||
String listValue = (String) params.get("listValue");
|
||||
int cnt = 0;
|
||||
|
||||
ValueStack stack = this.context.getStack();
|
||||
if (listObj != null) {
|
||||
Iterator itt = MakeIterator.convert(listObj);
|
||||
while (itt.hasNext()) {
|
||||
Object item = itt.next();
|
||||
stack.push(item);
|
||||
ValueStack stack = this.context.getStack();
|
||||
if (listObj != null) {
|
||||
Iterator itt = MakeIterator.convert(listObj);
|
||||
while (itt.hasNext()) {
|
||||
Object item = itt.next();
|
||||
stack.push(item);
|
||||
|
||||
// key
|
||||
Object itemKey = findValue(listKey != null ? listKey : "top");
|
||||
String itemKeyStr = StringUtils.defaultString(itemKey == null ? null : itemKey.toString());
|
||||
// key
|
||||
Object itemKey = findValue(listKey != null ? listKey : "top");
|
||||
String itemKeyStr = StringUtils
|
||||
.defaultString(itemKey == null ? null : itemKey
|
||||
.toString());
|
||||
|
||||
// value
|
||||
Object itemValue = findValue(listValue != null ? listValue : "top");
|
||||
String itemValueStr = StringUtils.defaultString(itemValue == null ? null : itemValue.toString());
|
||||
// value
|
||||
Object itemValue = findValue(listValue != null ? listValue
|
||||
: "top");
|
||||
String itemValueStr = StringUtils
|
||||
.defaultString(itemValue == null ? null : itemValue
|
||||
.toString());
|
||||
|
||||
// Radio button section
|
||||
String id = params.get("id") + Integer.toString(cnt++);
|
||||
Attributes a = new Attributes();
|
||||
a.add("type", "radio").addDefaultToEmpty("name", params.get("name"))
|
||||
.addIfTrue("checked", isChecked(params, itemKeyStr)).addIfExists("value", itemKeyStr)
|
||||
.addIfTrue("disabled", params.get("disabled")).addIfExists("tabindex", params.get("tabindex"))
|
||||
.addIfExists("id", id);
|
||||
super.start("input", a);
|
||||
super.end("input");
|
||||
// Radio button section
|
||||
String id = params.get("id") + Integer.toString(cnt++);
|
||||
Attributes a = new Attributes();
|
||||
a.add("type", "radio")
|
||||
.addDefaultToEmpty("name", params.get("name"))
|
||||
.addIfTrue("checked", isChecked(params, itemKeyStr))
|
||||
.addIfExists("value", itemKeyStr)
|
||||
.addIfTrue("disabled", params.get("disabled"))
|
||||
.addIfExists("tabindex", params.get("tabindex"))
|
||||
.addIfExists("id", id);
|
||||
super.start("input", a);
|
||||
super.end("input");
|
||||
|
||||
// Label section
|
||||
a = new Attributes();
|
||||
a.addIfExists("for", id).addIfExists("class", params.get("cssClass"))
|
||||
.addIfExists("style", params.get("cssStyle")).addIfExists("title", params.get("title"));
|
||||
super.start("label", a);
|
||||
if (StringUtils.isNotEmpty(itemValueStr)) {
|
||||
characters(itemValueStr);
|
||||
}
|
||||
super.end("label");
|
||||
stack.pop();
|
||||
}
|
||||
}
|
||||
}
|
||||
// Label section
|
||||
a = new Attributes();
|
||||
a.addIfExists("for", id)
|
||||
.addIfExists("class", params.get("cssClass"))
|
||||
.addIfExists("style", params.get("cssStyle"))
|
||||
.addIfExists("title", params.get("title"));
|
||||
super.start("label", a);
|
||||
if (StringUtils.isNotEmpty(itemValueStr)) {
|
||||
characters(itemValueStr);
|
||||
}
|
||||
super.end("label");
|
||||
stack.pop();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* It's set to true if the nameValue (the value associated with the name
|
||||
* which is typically set in the action is equal to the current key value.
|
||||
*
|
||||
* @param params
|
||||
* the params
|
||||
*
|
||||
* @param itemKeyStr
|
||||
* the item key str
|
||||
*
|
||||
* @return the boolean
|
||||
*/
|
||||
private Boolean isChecked(Map<String, Object> params, String itemKeyStr) {
|
||||
Boolean checked = false;
|
||||
if (itemKeyStr != null) {
|
||||
/**
|
||||
* It's set to true if the nameValue (the value associated with the name
|
||||
* which is typically set in the action is equal to the current key value.
|
||||
*
|
||||
* @param params
|
||||
* the params
|
||||
*
|
||||
* @param itemKeyStr
|
||||
* the item key str
|
||||
*
|
||||
* @return the boolean
|
||||
*/
|
||||
private Boolean isChecked(Map<String, Object> params, String itemKeyStr) {
|
||||
Boolean checked = false;
|
||||
if (itemKeyStr != null) {
|
||||
|
||||
// NameValue are the values that is provided by the name property
|
||||
// in the action
|
||||
Object nameValue = params.get("nameValue");
|
||||
// NameValue are the values that is provided by the name property
|
||||
// in the action
|
||||
Object nameValue = params.get("nameValue");
|
||||
|
||||
if (nameValue != null) {
|
||||
if (nameValue != null) {
|
||||
|
||||
Iterator itt = MakeIterator.convert(nameValue);
|
||||
while (itt.hasNext()) {
|
||||
Iterator itt = MakeIterator.convert(nameValue);
|
||||
while (itt.hasNext()) {
|
||||
|
||||
String value = (String) itt.next();
|
||||
if (checked = value.equalsIgnoreCase(itemKeyStr)) {
|
||||
break;
|
||||
}
|
||||
String value = itt.next().toString();
|
||||
if (checked = value.equalsIgnoreCase(itemKeyStr)) {
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return checked;
|
||||
}
|
||||
}
|
||||
return checked;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user