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

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

电脑杂谈  发布时间:2018-02-05 18:03:03  来源:网络整理

今天就以前台表单提交两个对象做实例。为了扩大影响,我让这两个对象的属性相同。

User.Java??和Addr.java

??

前台JSP

看到这种情况,很容易想到struts进行绑定非常方便,可是,谁让我们要使用SpringMVC呢。。。这种情况springMVC直接进行入参,是不能接收到参数的。

??解决思路:

使用 @InitBinder 注解进行绑定参数。前台表单中name属性仍然使用Object.Param形式传入。(另一种解决思路:扩展spring的HandlerMethodArgumentResolver以支持自定义的数据绑定方式。)

??

@InitBinder("user")????

????????public??void??initBinderUser(WebDataBinder??binder)??{????

????????????????binder.setFieldDefaultPrefix("user.");????

????????}????

此处使用@InitBinder() 中间的value,用于指定命令/表单属性或请求参数的名字,符合该名字的将使用此处的DataBinder,如我们的@ModelAttribute("user1") User user1 将使用@InitBinder("user1")指定的DataBinder绑定;如果不指定value值,那么所有的都将使用。

DataBinder.setFieldDefaultPrefix 意思是设置参数的前缀,如我们的是"user1.",此处不能少了".",

这种方式的缺点:

1、不支持Path variable的绑定,如/test1/{user1.id}这种情况的绑定;

2、不支持如集合/数组的绑定;

后台接收 完整代码:

??

[java]??view plain??

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

@Controller????

@RequestMapping("/test")????

public??class??TestController??{????

//??绑定变量名字和属性,参数封装进类????

????????@InitBinder("user")????

????????public??void??initBinderUser(WebDataBinder??binder)??{????

????????????????binder.setFieldDefaultPrefix("user.");????

????????}????

????????//??绑定变量名字和属性,参数封装进类????

????????@InitBinder("addr")????

????????public??void??initBinderAddr(WebDataBinder??binder)??{????

????????????????binder.setFieldDefaultPrefix("addr.");????

????????}????

????????????

????????????

????????@RequestMapping("/test")????

????????@ResponseBody????

????????public??Map<String,Object>??test(HttpServletRequest??request,@ModelAttribute("user")??User??user,@ModelAttribute("addr")??Addr??addr){????


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

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

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