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

标签 java spring spring-boot

我的问题几乎是 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中断点的结果:

enter image description here

关于java - Spring REST - 将 GET 参数绑定(bind)到嵌套对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59256378/

相关文章:

angularjs - Angular 和 Spring 服务器缓存 .js 和 .html 文件

java - 如何在 Spring Security 中动态切换应用程序上下文?

java - timetoliveseconds ehcache spring boot 配置不起作用

spring - 使用Spring批处理从HDFS读取文件

java - 如何使用 GSON 解析错误?

java - 如何创建从 postgres 到 parquet 的管道?

java - RecyclerView 之上的透明 TextView

java - Spring Security 中具有多个 http 部分的 NoUniqueBeanDefinitionException

java - 更正应用程序的类路径,使其包含 org.axonframework.eventsourcing.eventstore.jpa 的单个兼容版本

java - 将 Map 的键值对作为对象访问