
一:前后端数据的传递过程中肯定会涉及到数据的绑定,因为一个个参数单独接收很费事且代码效率会大大降低,下面就对各种类型的数据进行绑定。mvc参数传值
重点:表单大量数据(多对象)的传递绑定
1、基本类型数据绑定
在controller中写一个int参数绑定的方法,
@RequestMapping("/int") @ResponseBody public String getInt(int id){ return ""+id; }
发送请求::8080/int?3
响应:此时会报500错误,接收不到名为id的参数
发送请求::8080/int?id=3
响应:3
结论:用基本类型进行参数绑定时,就必须传入key值,且value值必须是声明的基本类型,否则将报错
2、包装类型参数绑定(推荐使用)
@RequestMapping("/integer") @ResponseBody public String getInt(Integer id){ return ""+id; }
请求::8080/integer?3????
???????????????????? :8080/integer????
???????????????????? :8080/integer?id=
上面的三个请求响应都是:null
请求::8080/integer?id=3
响应:3
结论:包装类型绑定参数时,key的值可以不传,数据也可以为空,但是要想绑定成功绑定,传的key值要和里面绑定的参数名一致
如果想要必须传入某个参数进行绑定,可以用@RequestParam,用了这个只有所需绑定的参数必须传入,否则报错
3、数组元素绑定
@RequestMapping("/array") @ResponseBody public String[] getUser(String[] name){ return name; } 请求:http://localhost:8080/user?name=xiaoshu&name=xiaozhang 响应:
["xiaoshu","xiaozhang"]
4、多层级对象的绑定
在user类中加入一个admin的对象属性
@RequestMapping("/user") @ResponseBody public User getUser(User user){ return user; }
请求::8080/user?name=xiaoshu&id=1&address=hangzhou&admin.name=xiaoli
响应{"id":1,"name":"xiaoshu","address":"hangzhou","admin":{"name":"xiaoli","address":null}}结论:将参数绑定到对象内层对象的属性中,如这里例子中的加上admin.name
5、同属性对象参数绑定
这里有两个对象user和admin,它们有两个相同的属性name和address
public String list(User user, Admin admin) { return user.toString()+""+admin.toString(); } 发送请求:http://localhost:8080/list?name=xiaoshu&address=home 得到:User{id=null, name='xiaoshu', address='home'}Admin{name='xiaoshu', address='home'} 发现属性被同时绑定到了两个对象上 我们可以通过在controller中配置一个@InitBinder进行分开绑定
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-65226-1.html
你知道吗
没钱看