Spring MVC的请求参数绑定到POJO领域

Spring MVC的请求参数绑定到POJO领域

问题描述:

我想用下面的映射(不完全)控制器:Spring MVC的请求参数绑定到POJO领域

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

从项目的存储库中的Item probe参数我想query by example并返回结果。

问:

我怎样才能完成上述映射搜索URL?作为搜索网址,我在想像/searchitems?itemAttributeA=foo&itemAttributeB=bar&...itemAttributeZ=xyz。我怎样才能告诉spring将通过的请求参数注入Item probe域名中?

添加@ModelAttribute应个人请求参数绑定到你的项目POJO。

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

我想添加一个后续。 Spring具有RestController的概念,如果使用此注释而不是Controller,则可以从方法签名中删除ResponseBody注释 –

您可以使用@RequestParam

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

您可以创建一个POJO并作为控制器类中的参数传递。 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