在 Java 或 Spring 中将列表传递给控制器​​?

我有以下方法,我需要将 List<UUID> 传递给这个 Controller 方法。

@GetMapping("/product/{productUuidList}")
public ResponseEntity<ApiResponse<List<ProductDTO>>> getProductList(
        @RequestParam List<UUID> productUuidList) {

        // code omitted
}

如果我通过逗号分隔传递列表参数,就可以了。但是,我想将这些列表参数作为 Json 数组传递。当我尝试在 Postman 中传递 uuid 参数时,如下所示,我收到 “productUuidList 参数丢失” 错误。

{ 
    "productUuidList": ["c849bcbb-c26c-4299-9ca4-dcde56830f5f","398ec0f8-86c8-400a-93cb-caf47c1ac92d"]
}

那么,我应该如何正确地将 uuid 数组传递给这个 Controller 方法而不将 @GetMapping 更改为 @PostMapping

zhengluxxx 回答:在 Java 或 Spring 中将列表传递给控制器​​?

它不会像这样工作。在这里,您将发送一个类似于 java POJO 的 JSON 对象:

public class MyUUIDWrapper{

    private List<UUID> productUuidList;
    // GETTERS/SETTERS  

}

所以 Spring 期望在 RequestBody 中检索一个 MyUUIDWrapper 对象

如果您像这样更改代码,它应该可以工作:

public ResponseEntity<ApiResponse<List<ProductDTO>>> getProductList(
    @RequestParam MyUUIDWrapper uuids) {

注意:如果您在反序列化 UUID 时遇到麻烦(我以前从未这样做过),请将 List 更改为 List。不是最聪明或最漂亮的解决方案,但您仍然可以稍后在控制器中转换它们;)

本文链接:https://www.f2er.com/220.html

大家都在问