Customize Spring @RequestParam Deserialization for Maps and/or Nested Objects

@RestController
class MyController {
     @RequestMapping(...)
     public void test(Container container) { ... }
}

Spring by default uses Dot-Notation to deserialize a nested @RequestParam:

class Container {
    A a;
}

class A {
    String val;
}

works with:

http://.../myController?a.val=foo

But for Maps it uses Square Bracket notation:

class Container {
    Map<String, String> a;
}

works with:

http://.../myController?a[val]=foo

When using JavaScript there's of course no difference between a HashMap and a Nested Object, so everything will get serialized either with Dots or Square-Brackets.


Question:

How / where can I tell Spring (or Spring Boot if that's easier) to use Dot-Notation (or Square Brackets) for both, nested objects and Maps?

Or is there any reason why Spring makes a difference between those types?

posted @ 2015-11-16 11:31  雄狮_杜  阅读(181)  评论(0编辑  收藏  举报