数组与集合参数绑定
当请求包含多个同名参数时,SpringMVC可将其绑定到数组或集合。
数组绑定
基本类型数组
Java
@Controller
public class DemoController {
@GetMapping("/delete")
public String delete(@RequestParam("id") Integer[] ids) {
for (Integer id : ids) {
System.out.println("删除ID:" + id);
}
return "success";
}
}
请求:/delete?id=1&id=2&id=3
字符串数组
Java
@GetMapping("/search")
public String search(@RequestParam("name") String[] names) {
Arrays.stream(names).forEach(System.out::println);
return "success";
}
请求:/search?name=张三&name=李四&name=王五
List集合绑定
List绑定需要@RequestParam注解:
Java
@GetMapping("/batch")
public String batch(@RequestParam("id") List<Integer> ids) {
ids.forEach(System.out::println);
return "success";
}
请求:/batch?id=1&id=2&id=3
复选框场景
HTML表单多选:
HTML
<form action="/hobby/save" method="post">
<input type="checkbox" name="hobby" value="篮球"> 篮球
<input type="checkbox" name="hobby" value="足球"> 足球
<input type="checkbox" name="hobby" value="游泳"> 游泳
<button type="submit">提交</button>
</form>
Java
@PostMapping("/hobby/save")
public String saveHobby(@RequestParam("hobby") String[] hobbies) {
System.out.println("爱好:" + Arrays.toString(hobbies));
return "success";
}
POJO中的集合
POJO对象包含集合属性:
Java
public class User {
private String username;
private List<String> hobbies;
// getter/setter
}
请求:/user/save?username=张三&hobbies=篮球&hobbies=足球
Java
@PostMapping("/user/save")
public String saveUser(User user) {
return "success";
}
List参数必须使用@RequestParam注解,数组可省略。
要点总结
- 多个同名参数自动绑定到数组或List
- 数组绑定:直接声明数组类型
- List绑定:必须加@RequestParam注解
- POJO中的集合属性可直接绑定
📝 发现内容有误?点击此处直接编辑