我想要一个具有以下映射的控制器(不完整):
@GetMapping(/searchitems)
public @ResponseBody Page<Item> get(Item probe)
从项目存储库中的Item probe
参数我想query by example并返回结果。
问题:
如何完成上述搜索网址的映射?作为搜索网址,我想的是/searchitems?itemAttributeA=foo&itemAttributeB=bar&...itemAttributeZ=xyz
。如何告诉spring将传递的请求参数注入具有相同名称的Item probe
字段?
答案 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中设置。
答案 2 :(得分:0)
您可以使用@RequestParam
。
public @ResponseBody Page<Item> get(@RequestParam("itemAttributeA") String itemAttributeA ,
@RequestParam("itemAttributeB") String itemAttributeB,...)