diff --git a/pom.xml b/pom.xml
index 300759b..aa3e436 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
de.srsoftware
web4rail
- 1.4.37
+ 1.4.38
Web4Rail
jar
Java Model Railway Control
diff --git a/src/main/java/de/srsoftware/web4rail/Application.java b/src/main/java/de/srsoftware/web4rail/Application.java
index 41fc6d9..a6c1cc9 100644
--- a/src/main/java/de/srsoftware/web4rail/Application.java
+++ b/src/main/java/de/srsoftware/web4rail/Application.java
@@ -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;