我需要将bean列表传递给我的控制器。
@RestController
@RequestMapping("/api")
public class MyController {
@RequestMapping(value = "/my/{id}/method", method = RequestMethod.POST)
public Result editRequest(
@RequestParam("first") String first,
@RequestParam("second") String second,
@RequestParam("third") String third,
@RequestParam("items") List<MyBean> items,
@PathVariable("id") Long id
) {
...
}
}
和MyBean:
public class MyBean {
private Integer fst;
private String snd;
private Long thd;
private Integer fo;
public MyBean() {
}
... get/set
}
我需要从AngularJS中做到这一点,但现在我正在使用curl在bash中测试它。我需要什么命令?
curl --data "first=-11374862&second=-1000&third=61&items[0][fst]=124231664&items[0][snd]=12&items[0][thd]=123&items[0][fo]=null" http://localhost:8080/api/my/100000/method --header "Content-Type:application/x-www-form-urlencoded"
会产生这样的错误:
Required List parameter 'items' is not present
答案 0 :(得分:1)
你可以试试下面的卷曲。你现在的curl命令有items
作为二维数组,而不是一个对象数组。
curl --data "first=-11374862&second=-1000&third=61&items[0].fst=124231664&items[0].snd=12&items[0].thd=123&items[0].fo=null" http://localhost:8080/api/my/100000/method --header "Content-Type:application/x-www-form-urlencoded"
此外,您可以考虑使用@RequestBody
将请求正文映射到对象。请检查此post。
答案 1 :(得分:1)
你无法传递对象列表,我可以使用@RequestParam("ids[]") Integer[] ids
来考虑原语和字符串,或者尝试使用@RequestBody传递列表。