improved inflate method for POST params

This commit is contained in:
Stephan Richter
2021-06-17 11:11:05 +02:00
parent d4acacd5d4
commit 35bdb37a8f
2 changed files with 21 additions and 4 deletions

View File

@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>de.srsoftware</groupId>
<artifactId>web4rail</artifactId>
<version>1.4.37</version>
<version>1.4.38</version>
<name>Web4Rail</name>
<packaging>jar</packaging>
<description>Java Model Railway Control</description>

View File

@@ -154,12 +154,29 @@ public class Application extends BaseClass{
private static Params inflate(String data) {
//LOG.debug("inflate({})",data);
Params params = new Params();
if (data == null || data.trim().isEmpty()) return params;
if (isNull(data) || data.trim().isEmpty()) return params;
String[] parts = data.split("&");
for (String part : parts) {
String[] entry = part.split("=", 2);
params.put(URLDecoder.decode(entry[0],UTF8),URLDecoder.decode(entry[1], UTF8));
String[] map = part.split("=", 2);
String key = URLDecoder.decode(map[0],UTF8);
String value = URLDecoder.decode(map[1], UTF8);
Params level = params;
while (key.contains("/")) { // root/path/entry=value mappen zu params[root][path][entry]=value
String[] path = key.split("/", 2);
key = path[0];
Object entry = level.get(key);
if (entry instanceof Params) {
level = (Params) entry;
} else {
Params dummy = new Params();
level.put(key, dummy);
level = dummy;
}
key = path[1];
}
level.put(key,value);
}
return params;