我想创建一个页面,用户可以在其中看到用户列表,并且每个用户旁边都有复选框,用户可以单击这些复选框将其删除。
在使用REST API的MVC中,我想将User
对象的列表发送到REST API。@RequestParam
注解能支持吗?
例如:
@RequestMapping(method = RequestMethod.DELETE, value = "/delete")
public @ResponseBody Integer delete(
@RequestParam("users") List<Users> list) {
Integer deleteCount = 0;
for (User u : list) {
if (u != null) {
repo.delete(u);
++deleteCount;
}
}
return deleteCount;
}
在MVC客户端中,url应为:
List list = new ArrayList<User>();
....
String url = "http://restapi/delete?users=" + list;
3条答案
按热度按时间zu0ti5jz1#
请求参数是字符串到字符串的多Map。不能将复杂对象作为请求参数传递。
但如果您只传递用户名,则应该可以工作-请参见how to capture multiple parameters using @RequestParam using spring mvc?
@RequestParam("users") List<String> list
但我认为只使用请求体来传递信息会更好。
8ljdwjyq2#
Spring mvc可以支持
List<Object>
、Set<Object>
和Map<Object>
参数,但不支持@RequestParam。以
List<Object>
为例,如果你的对象是User.java
,它是这样的:如果你想传递一个参数
List<User>
,你可以这样使用url记住要对url进行编码,编码后的url是这样的:
List<Object>
、Set<Object>
和Map<Object>
的示例显示在my github中。14ifxucb3#
提醒一下,任何自定义对象的List都可能需要注册自定义转换器,例如:
因此,您可以涵盖以下自定义案例:
其中:@RequestParam(“自定义”)列出自定义对象