0

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

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

Item probe我想在项目存储库中通过示例查询并返回结果的参数。

问题:

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

4

3 回答 3

1

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

public @ResponseBody Page<Item> get(@ModelAttribute Item probe)
于 2017-04-19T16:46:35.203 回答
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

于 2017-04-19T17:10:57.470 回答
0

你可以用@RequestParam这个。

public @ResponseBody Page<Item> get(@RequestParam("itemAttributeA") String itemAttributeA , 
                                    @RequestParam("itemAttributeB") String itemAttributeB,...)
于 2017-04-19T16:45:59.473 回答