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)
答
您可以使用@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中设置。
我想添加一个后续。 Spring具有RestController的概念,如果使用此注释而不是Controller,则可以从方法签名中删除ResponseBody注释 –