慕课网《SpringMVC数据绑定入门》笔记
List
将表单数据绑定到后台List对象,只能绑定到类型是List的属性上面
url:...?users[0].name=Tom&users[20].name=Jerry
//这种方法是错误的
[@Controller](https://my.oschina.net/u/1774615)
public String list(List<User> users){
return ...
}
需要定义一个对象来接
class UsersListForm{
private List<User> users;
}
[@Controller](https://my.oschina.net/u/1774615)
public String list(UsersListForm userListForm){
//表单数据会绑定到userListForm的users属性上
return ...
}
需要注意的是,users接收到的数组大小,例如上面虽然只有两个name,但是后台的users.size()却是20.
Set
相对于List,Set需要先初始化,在实际应用中,Set大部分是用于对象的重复判断和排除重复。
class UserSetForm{
private Set<User> users;
//初始化
static{
users.add(user1);
users.add(user2);
...
}
}
[@Controller](https://my.oschina.net/u/1774615)
public String set(UserSetForm userSetForm){
//表单数据会绑定到userSetForm的users属性上
return ...
}
可以重写hashCode()和equals()方法,达到排重的目的。但SpringMVC对Set支持不友好,必须先初始化users的size(),如果不等于表单提交的size()就会报异常,因此对于集合,还是用List 的好。
Map
url:...?users["key"].name=Tom&...
class UserMapForm{
private Map<String, User> users;
}
[@Controller](https://my.oschina.net/u/1774615)
public String set(UserMapForm, userMapForm){
//表单数据会绑定到userMapForm的users属性上
return ...
}