Spring REST - 将 GET 参数绑定到嵌套对象列表

use*_*850 6 java spring spring-boot

我的问题几乎是1:1的这一个。我唯一的区别(和挣扎)是我的“数据容器”有一组对象。它看起来像这样:

public class A {
    int plainFieldA;
    B fieldB;
    List<B> collectionB = new ArrayList<>();
}

public class B {
    int plainFieldB;
}

@Transactional(readOnly = true)
@GetMapping("")
public Entity getAll(A reqParam) {
    return getAll(reqParam);
}
Run Code Online (Sandbox Code Playgroud)

是否可以collectionBhttp://localhost/api/test?plainFieldA=1不创建转换器的情况下定义url 的参数?@GameSalutes 正确地指出,从 spring 开始4我们可以这样fieldB.plainFieldB=2做,url 将是:http://localhost/api/test?plainFieldA=1&fieldB.plainFieldB=2但问题是我们可以在collectionB不创建转换器的情况下做类似的事情吗?

Fra*_*cio 5

是的,您可以像这样提出请求:

http://localhost/api/test?plainFieldA=1&fieldB.plainFieldB=2&collectionB[0].plainFieldB=9
Run Code Online (Sandbox Code Playgroud)

或者为邮递员编码请求:

http://localhost/api/test?plainFieldA=1&fieldB.plainFieldB=2&collectionB%5B0%5D.plainFieldB=9
Run Code Online (Sandbox Code Playgroud)

请求两个对象:

http://localhost/api/test?plainFieldA=1&fieldB.plainFieldB=2&collectionB%5B0%5D.plainFieldB=9&collectionB%5B1%5D.plainFieldB=11
Run Code Online (Sandbox Code Playgroud)

IDE中带断点的结果:

在此处输入图片说明