b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

mvc参数传值 springmvc中的数据绑定(前后台传递)(2)

电脑杂谈  发布时间:2018-02-05 18:03:03  来源:网络整理
@InitBinder("user")
public void initUser(WebDataBinder binder){
    binder.setFieldDefaultPrefix("user.");
}
@InitBinder("admin")
public void  initAdmin(WebDataBinder binder){
    binder.setFieldMarkerPrefix("admin.");

}

此时发送请求:http://localhost:8080/list?user.name=xiaoshu&user.address=home
得到:User{id=null, name='xiaoshu', address='home'}Admin{name='null', address='null'}
可以看到带user.前缀的参数只绑定到了user对象中

那如果试一下没有配置@InitBinder时用user.和admin.作为前缀进行请求发送
请求:http://localhost:8080/list?user.name=xiaoshu&user.address=home&admin.name=xiaozhang&admin.address=hangzhou
响应:User{id=null, name='null', address='null'}Admin{name='null', address='null'}
发现都是为空,参数未能成功绑定

结论:进行同属性参数绑定时,要区分绑定时需在属性前加上对象前缀,并在controller中配置@InitBinder来明确哪个前缀的属性绑定到哪个对象中
     没有配置@InitBinder加前缀不能成功绑定
6、List绑定

mvc参数传递_mvc参数传值_sprinfmvc传值

@RequestMapping("/list")
@ResponseBody
public AdminList getUser(AdminList adminList){
    return  adminList;
}
请求::8080/list?admins[0].name=xiaoshu&admins[1].name=xiaozhang

响应:

{"admins":[{"name":"xiaoshu","address":null},{"name":"xiaozhang","address":null}]}
结论:这里不能直接用List去绑定,而是要创建一个类类中创建一个List去绑定,AdminList中创建了一个ArrayList。

7、Map绑定

@RequestMapping("/map")
@ResponseBody
public AdminMap getMap(AdminMap adminMap){
    return  adminMap;
}
AdminMap中维护了一个Hashmap

请求::8080/map?admins['X'].name=xiaoshu&admins['Y'].name=xiaozhang

响应:

{"admins":{"Y":{"name":"xiaozhang","address":null},"X":{"name":"xiaoshu","address":null}}}

结论:map存放可以保证key的唯一性,过滤冲重复数据

8.重点介绍表单多对象传递的绑定(特别是多对象的属性名相同的情况):

问题出现

要在一张表单中提交多个对象,并且还要在后台Controller 中精准的绑定接收。可是,这些对象中的参数名可能相同,后台接收入参时无法像struts那样jsp表单中使用Object.Param形式对表单进行精准绑定入参,我们都知道struts2默认就是这种方案,这是因为struts2采用了OGNL,并通过栈(根对象)进行操作的,而且栈中默认有action实例,所以很自然的没有这种问题。mvc参数传值另一方面说,Struts用这种方式绑定入参,却牺牲了性能。虽然springmvc不能像struts那样方便的很直接的入参绑定,当然,spring多对象绑定入参也提供了方法。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-65226-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...