action tag accepts only String arrays as parameters
---------------------------------------------------
Key: WW-3730
URL: https://issues.apache.org/jira/browse/WW-3730
Project: Struts 2
Issue Type: Bug
Components: Plugin - Tags
Affects Versions: 2.3.1, 2.2.3.1, 2.3.1.1, 2.3.x
Reporter: Pavel Kazlou
{{org.apache.struts2.components.Component}} accepts arbitrary objects as
parameters:
{code}
public Map getParameters() {
return parameters;
}
...
public void addParameter(String key, Object value) {
if (key != null) {
Map params = getParameters();
if (value == null) {
params.remove(key);
} else {
params.put(key, value);
}
}
}
{code}
But {{org.apache.struts2.components.ActionComponent}} explicitly casts all his
parameters to {{String[]}}:
{code}
protected Map<String,String[]> createParametersForContext() {
Map parentParams = null;
if (!ignoreContextParams) {
parentParams = new
ActionContext(getStack().getContext()).getParameters();
}
Map<String,String[]> newParams = (parentParams != null)
? new HashMap<String,String[]>(parentParams)
: new HashMap<String,String[]>();
if (parameters != null) {
Map<String,String[]> params = new HashMap<String,String[]>();
for (Iterator i = parameters.entrySet().iterator(); i.hasNext(); ) {
Map.Entry entry = (Map.Entry) i.next();
String key = (String) entry.getKey();
Object val = entry.getValue();
if (val.getClass().isArray() && String.class ==
val.getClass().getComponentType()) {
params.put(key, (String[])val);
} else {
params.put(key, new String[]{val.toString()});
}
}
newParams.putAll(params);
}
return newParams;
}
{code}
So I can't pass arbitrary objects directly to action using syntax:
{code}
<s:action name="myAction"><s:param name="customObject"
value="customObject"/></s:action>
{code}
without conversion customObject->String->customObject.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira