Spring MVC @RequestParam 对象列表
Spring MVC @RequestParam a list of objects
我想创建一个页面,用户可以在其中看到用户列表,每个用户旁边都有复选框,用户可以单击这些复选框来删除它们。
在我使用 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;
请求参数是String to String的Multimap。您不能将复杂对象作为请求参数传递。
但是如果您只传递应该有效的用户名 - 请参阅 how to capture multiple parameters using @RequestParam using spring mvc?
@RequestParam("users") List<String> list
不过我觉得还是直接用request body来传递信息比较好。
Spring mvc 可以支持List<Object>
、Set<Object>
和Map<Object>
参数,但没有@RequestParam。
以List<Object>
为例,如果你的对象是User.java
,它是这样的:
public class User {
private String name;
private int age;
// getter and setter
}
你想传递一个List<User>
的参数,你可以像这样使用url
http://127.0.0.1:8080/list?users[0].name=Alice&users[0].age=26&users[1].name=Bob&users[1].age=16
记得对url进行编码,编码后的url是这样的:
http://127.0.0.1:8080/list?users%5B0%5D.name=Alice&users%5B0%5D.age=26&users%5B1%5D.name=Bob&users%5B1%5D.age=16
List<Object>
、Set<Object>
和 Map<Object>
的示例显示在 my github 中。
我想创建一个页面,用户可以在其中看到用户列表,每个用户旁边都有复选框,用户可以单击这些复选框来删除它们。
在我使用 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;
请求参数是String to String的Multimap。您不能将复杂对象作为请求参数传递。
但是如果您只传递应该有效的用户名 - 请参阅 how to capture multiple parameters using @RequestParam using spring mvc?
@RequestParam("users") List<String> list
不过我觉得还是直接用request body来传递信息比较好。
Spring mvc 可以支持List<Object>
、Set<Object>
和Map<Object>
参数,但没有@RequestParam。
以List<Object>
为例,如果你的对象是User.java
,它是这样的:
public class User {
private String name;
private int age;
// getter and setter
}
你想传递一个List<User>
的参数,你可以像这样使用url
http://127.0.0.1:8080/list?users[0].name=Alice&users[0].age=26&users[1].name=Bob&users[1].age=16
记得对url进行编码,编码后的url是这样的:
http://127.0.0.1:8080/list?users%5B0%5D.name=Alice&users%5B0%5D.age=26&users%5B1%5D.name=Bob&users%5B1%5D.age=16
List<Object>
、Set<Object>
和 Map<Object>
的示例显示在 my github 中。