在 Java 或 Spring 中将列表传递给控制器?
Passsing List to Controller in Java or Spring?
我有以下方法,我需要将 List<UUID>
传递给此 Controller 方法。
@GetMapping("/product/{productUuidList}")
public ResponseEntity<ApiResponse<List<ProductDTO>>> getProductList(
@RequestParam List<UUID> productUuidList) {
// code omitted
}
如果我通过分隔逗号传递列表参数,就可以了。但是,我想将这些列表参数作为 Json 数组传递。当我尝试如下所示在 Postman 中传递 uuid 参数时,出现 "productUuidList parameter is missing" 错误。
{
"productUuidList": ["c849bcbb-c26c-4299-9ca4-dcde56830f5f", "398ec0f8-86c8-400a-93cb-caf47c1ac92d"]
}
那么,我应该如何在不将 @GetMapping
更改为 @PostMapping
的情况下正确地将 uuid 数组传递给此控制器方法?
这样不行。您在这里发送一个 JSON 对象,看起来像这样 java POJO :
public class MyUUIDWrapper{
private List<UUID> productUuidList;
// GETTERS/SETTERS
}
因此 Spring 期望在 RequestBody
中检索 MyUUIDWrapper 对象
如果您像这样更改代码,它应该可以工作:
public ResponseEntity<ApiResponse<List<ProductDTO>>> getProductList(
@RequestParam MyUUIDWrapper uuids) {
注意:如果您在反序列化 UUID 时遇到问题(我以前从未这样做过),请将 List 更改为 List。不是最聪明或最漂亮的解决方案,但您稍后仍可以在控制器中转换它们 ;)
我有以下方法,我需要将 List<UUID>
传递给此 Controller 方法。
@GetMapping("/product/{productUuidList}")
public ResponseEntity<ApiResponse<List<ProductDTO>>> getProductList(
@RequestParam List<UUID> productUuidList) {
// code omitted
}
如果我通过分隔逗号传递列表参数,就可以了。但是,我想将这些列表参数作为 Json 数组传递。当我尝试如下所示在 Postman 中传递 uuid 参数时,出现 "productUuidList parameter is missing" 错误。
{
"productUuidList": ["c849bcbb-c26c-4299-9ca4-dcde56830f5f", "398ec0f8-86c8-400a-93cb-caf47c1ac92d"]
}
那么,我应该如何在不将 @GetMapping
更改为 @PostMapping
的情况下正确地将 uuid 数组传递给此控制器方法?
这样不行。您在这里发送一个 JSON 对象,看起来像这样 java POJO :
public class MyUUIDWrapper{
private List<UUID> productUuidList;
// GETTERS/SETTERS
}
因此 Spring 期望在 RequestBody
中检索 MyUUIDWrapper 对象如果您像这样更改代码,它应该可以工作:
public ResponseEntity<ApiResponse<List<ProductDTO>>> getProductList(
@RequestParam MyUUIDWrapper uuids) {
注意:如果您在反序列化 UUID 时遇到问题(我以前从未这样做过),请将 List 更改为 List。不是最聪明或最漂亮的解决方案,但您稍后仍可以在控制器中转换它们 ;)