如何传递List<>在REST POST方法中使用spring mvc

时间:2014-08-13 03:29:54

标签: java spring rest spring-mvc

我正在尝试使用spring mvc在REST post方法的请求主体中传递类似值的List。以下是我的示例代码。请告诉我在请求者中发送列表的正确方法。

@RequestMapping(value = "/userlogin/details", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public ResponseEntity<String> insertLoginDetails(
        @RequestParam("username") String userName,
        @RequestBody List<String> listOfID) {
    return eventAnalyzerHelper.insertUserLoginDetails(userName,
            listOfID);
}

由于

2 个答案:

答案 0 :(得分:4)

此示例可能会对您有所帮助

每个text input都有相同的名称:

<form method="post">
  Fruit 1: <input type="text" name="fruits"/><br/>
  Fruit 2: <input type="text" name="fruits"/><br/>
  Fruit 3: <input type="text" name="fruits"/><br/>
  <input type="submit"/>
</form>

controller’s handler method上,您可以通过以下方式绑定来获取所有水果名称的列表:

@RequestMapping(value = "/", method = RequestMethod.POST)
public String addFruits(@RequestParam("fruits") List<String> fruits) {
  // ...
}

基本上Spring会自行处理,如果你有多个具有相同路径/名称的字段,它会自动尝试将其转换为Array或List。

答案 1 :(得分:0)

您需要将List包装在Object中。它的设计更好。您可以将此对象设为通用,并在需要时在其他控制器中多次重复使用。请注意,在调用系统中构造对象时必须遵循相同的结构。

@RequestMapping(value = "/", method = RequestMethod.POST)
public String addFruits(@RequestBody ListWrapper fruits) {
 // ...
}