SpringMVC数据绑定

SpringMVC数据绑定流程:
1.Spring MVC主框架将ServletRequest对象以及目标方法的入参实例传递给WebDataBinderFactory实例,以创建DataBinder(数据绑定器)实例对象

2.DataBinder在调用装配在Srping MVC上下文中的conversionService

组件进行数据类型转换,数据格式化工作,将Servlet中的请求信息填充到入参对象

3.调用validator对已经绑定了请求消息的入参对象进行数据合法性校验,并最终生成数据绑定结果BindingData对象

4.SpringMVC抽取BindingResult中的入参对象和校验错误对象.将他们赋给处理方法的响应入参

一.基本数据类型(int为例)
jsp:

<form action="testInt" >
id:<input type="text" name="id" value="10"/>
<input type="submit" value="submit">
</form>

controller:

@RequestMapping(value="testInt")
public String testInt(int id){
System.out.println(id);
return "success";
}

input中的name属性和目标方法的参数名相同,不同的话可以使用@RequestParam注解,如果input值为null或“”,目标方法参数为基本数据类型会报数据类型转换异常,解决方案是目标方法参数使用包装类。

二.对象类型
user类:

private int id;
private String username;
private String passsword;
private int age;
private String email;

jsp:

<form action="testUser" >
<input type="hidden" name="id" value="1" /> 
<input type="text" name="username" value="zhangsan" /> 
<input type="text" name="age" value="10" /> 
<input type="text" name="email" value="asd@huawei.com" />
<input type="submit" value="submit" />
</form>

controller:

@RequestMapping("testUser")
public String testUser(User user){
System.out.println("user:"+user);
return "success";
}

input的name属性和user对象的属性名称要一样,且user属性要有对应的set方法

三.list集合类型
UserList类:

public class UserList {

private List<User> userList;

public List<User> getUserList() {
return userList;
}

public void setUserList(List<User> userList) {
this.userList = userList;
}

@Override
public String toString() {
return "UserList [userList=" + userList + "]";
}

}

jsp:

<form action="testList" >
<table>
<tr>
<td><input name="userList[0].id" value="1"></td>
<td><input name="userList[0].username" value="lisi"></td>
<td><input name="userList[0].age" value="22"></td>
<td><input name="userList[0].email" value="asd@huawei.com"></td>
</tr>
<tr>
<td><input name="userList[1].id" value="2"></td>
<td><input name="userList[1].username" value="wangwu"></td>
<td><input name="userList[1].age" value="23"></td>
<td><input name="userList[1].email" value="qwe@huawei.com"></td>
</tr>
<tr>
<input type="submit" value="submit">
</tr>
</table>
</form>

controller:

@RequestMapping("testList")
public String testList(UserList userList){
for(User user:userList.getUserList()){
System.out.println(user);
}
return "success";
}

userList属性被定义成了list,所以在input的name属性中需要指定list下标

四.set集合类型
set和list类似,但set在使用时需要先在Set对象中add相应的数量的模型对象

private Set<User> userSet = new HashSet<User>();
public UserSet() {
userSet.add(new User());
userSet.add(new User());
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值