Fix RequestTrans.set() for multiple file upload items with the same name.
This commit is contained in:
parent
22ec17d968
commit
19c2858b32
1 changed files with 10 additions and 5 deletions
|
@ -128,12 +128,13 @@ public class RequestTrans implements Serializable {
|
||||||
*/
|
*/
|
||||||
public void set(String name, Object value) {
|
public void set(String name, Object value) {
|
||||||
int bracket = name.indexOf('[');
|
int bracket = name.indexOf('[');
|
||||||
|
Object previousValue;
|
||||||
if (bracket > -1 && name.endsWith("]")) {
|
if (bracket > -1 && name.endsWith("]")) {
|
||||||
Matcher m = paramPattern.matcher(name);
|
Matcher m = paramPattern.matcher(name);
|
||||||
String partName = name.substring(0, bracket);
|
String partName = name.substring(0, bracket);
|
||||||
Map map = values;
|
Map map = values;
|
||||||
while (m.find()) {
|
while (m.find()) {
|
||||||
Object previousValue = map.get(partName);
|
previousValue = map.get(partName);
|
||||||
Map partMap;
|
Map partMap;
|
||||||
if (previousValue == null) {
|
if (previousValue == null) {
|
||||||
partMap = new SystemMap();
|
partMap = new SystemMap();
|
||||||
|
@ -146,11 +147,15 @@ public class RequestTrans implements Serializable {
|
||||||
partName = m.group(1);
|
partName = m.group(1);
|
||||||
map = partMap;
|
map = partMap;
|
||||||
}
|
}
|
||||||
if (map.put(partName, value) != null)
|
previousValue = map.put(partName, value);
|
||||||
throw new RuntimeException("Conflicting HTTP Parameters for '" + name + "'");;
|
if (previousValue != null &&
|
||||||
|
(!(previousValue instanceof Object[]) || ! partName.endsWith("_array")))
|
||||||
|
throw new RuntimeException("Conflicting HTTP Parameters for '" + name + "'");
|
||||||
} else {
|
} else {
|
||||||
if (values.put(name, value) != null)
|
previousValue = values.put(name, value);
|
||||||
throw new RuntimeException("Conflicting HTTP Parameters for '" + name + "'");;
|
if (previousValue != null &&
|
||||||
|
(!(previousValue instanceof Object[]) || !name.endsWith("_array")))
|
||||||
|
throw new RuntimeException("Conflicting HTTP Parameters for '" + name + "'");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue