Spring MVC 将请求参数绑定到 POJO 字段

Spring MVC Binding Request parameters to POJO fields

我想要一个具有以下映射(不完整)的控制器:

@GetMapping(/searchitems)
public @ResponseBody Page<Item> get(Item probe)

我想从 Item probe 参数中 query by example 项目存储库和 return 结果。

问题:

如何完成上面的映射以进行搜索 URL?作为搜索 URL,我在想 /searchitems?itemAttributeA=foo&itemAttributeB=bar&...itemAttributeZ=xyz。如何告诉 spring 将传递的请求参数注入同名的 Item probe 字段?

您可以使用 @RequestParam 来实现。

public @ResponseBody Page<Item> get(@RequestParam("itemAttributeA") String itemAttributeA , 
                                    @RequestParam("itemAttributeB") String itemAttributeB,...)

添加@ModelAttribute 应该将各个请求参数绑定到您的项目 POJO 中。

public @ResponseBody Page<Item> get(@ModelAttribute Item probe)

您可以创建一个 POJO 并在控制器中作为参数传递 class。 Pojo 应该有你想要读取和设置的字段。 Spring 将读取并映射您将定义为请求的 Pojo 中的那些属性。

 @GetMapping(/searchitems)
 public ResponseEntity<List<Items>> searchItems(ItemRequest       itemRequest) {
 }

唯一需要注意的是检查绑定结果。如果有错误,我们需要停止请求并处理或抛出。

例如URL 中的所有以下属性都将在 Pojo 中设置。

https://domain/search-items?pageNumber=1&sortOrder=ascending&itemName=test&itemType=apparel&sortField=itemId&pageSize=5