【问题标题】:Passing a nested array of objects as URL parameters in Spring Controller在 Spring Controller 中将嵌套的对象数组作为 URL 参数传递
【发布时间】:2021-04-06 11:22:10
【问题描述】:

我正在尝试将复杂的搜索查询对象传递给 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 的数组?

【问题讨论】:

标签: java spring-boot spring-mvc controller url-parameters


【解决方案1】:

我认为最好使用 JSON 并发布复杂的搜索查询。 可能是这样的

@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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    • 2010-12-18
    相关资源
    最近更新 更多