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

时间:2017-04-19 16:40:41

标签: java spring spring-mvc query-by-example

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

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

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

问题:

如何完成上述搜索网址的映射?作为搜索网址,我想的是/searchitems?itemAttributeA=foo&itemAttributeB=bar&...itemAttributeZ=xyz。如何告诉spring将传递的请求参数注入具有相同名称的Item probe字段?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

您可以创建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

答案 2 :(得分:0)

您可以使用@RequestParam

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