微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Spring Controller 中将嵌套的对象数组作为 URL 参数传递

如何解决在 Spring Controller 中将嵌套的对象数组作为 URL 参数传递

我正在尝试将复杂的搜索查询对象传递给 Spring Controller,而不进行过多的自定义(如自定义转换器)。

例如,我知道我可以得到这样的参数列表/数组:

const compareDate = (dateVal1,dateVal2) => {
        if (dateVal1.valueOf() === dateVal2.valueOf()){
            return true;
        }
        else { return false;}
    }
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; <-- } [...] 数组?

解决方法

我认为对于复杂的搜索查询最好使用 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。