我的问题几乎是 1:1 为 this one 。我唯一的区别(和困难)是我的“数据容器”有一个对象集合。它看起来像这样:
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);
}
是否可以在 url http://localhost/api/test?plainFieldA=1
的参数中定义 collectionB
而不创建转换器? @GameSalutes 正确地指出,从 spring 4
开始,我们可以执行 fieldB.plainFieldB=2
所以 url 将是: http://localhost/api/test? plainFieldA=1&fieldB.plainFieldB=2
但问题是我们可以在不创建转换器的情况下对 collectionB
做类似的事情吗?
最佳答案
是的,您可以这样提出请求:
http://localhost/api/test?plainFieldA=1&fieldB.plainFieldB=2&collectionB[0].plainFieldB=9
或者对 postman 的请求进行编码:
http://localhost/api/test?plainFieldA=1&fieldB.plainFieldB=2&collectionB%5B0%5D.plainFieldB=9
请求中有两个对象:
http://localhost/api/test?plainFieldA=1&fieldB.plainFieldB=2&collectionB%5B0%5D.plainFieldB=9&collectionB%5B1%5D.plainFieldB=11
IDE中断点的结果:
关于java - Spring REST - 将 GET 参数绑定(bind)到嵌套对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59256378/