java—在spring控制器中作为url参数传递对象的嵌套数组

jjjwad0x  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(584)

我试图将一个复杂的搜索查询对象传递给spring控制器,而不进行太多的定制(比如定制转换器)。
例如,我知道我可以得到如下参数列表/数组:

GET http://host.com/path?param=abc&param=123
@GetMapping
String query(String[] param) {
    // param[]={abc, 123}
    ...
}

如果我想要一个物体,我可以这样做:

GET http://host.com/path?field1=abc&field2=123&field3.a=1&field3.b=2
@GetMapping
String query(MyObject obj) {
    // MyObject(field1=abc, field2=123, field3=NestedObject(a=1, b=2))
    ...
}

class MyObject {
    String field1, field2;
    NestedObject field3;
}

class NestedObject {
    int a, b;
}

但我真正需要的是将两者结合起来:

[...]
class MyObject {
    String field1, field2;
    NestedObject[] field3; <--
}
[...]

如何构造查询参数以正确填充 NestedObject ?

to94eoyn

to94eoyn1#

我认为对于复杂的搜索查询最好使用json和post。也许是这样

@RequestMapping(value = "/greeting", method = POST, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE)
@ResponseBody
public String greetingJson(HttpEntity<String> httpEntity) {
    String json = httpEntity.getBody();
    // json contains the plain json string

相关问题