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;