SpringMVC 传递相同名称的参数的最佳方法
华为云4核8G,高性能云服务器,免费试用 >>>
SpringMVC 多个对象的相同字段参数传递解决方案,在SpringMVC中,有时需要传递多个对象(除了Model和web元素)
众所周知,在SpringMVC中不支持类似struts2的点语法传参法则,因此多个对象同名参数传递势必会造成一定的问题。
SpringMVC的参数传递非常智能,可自动装配参数到对象
public class User{private String name;private String id;private String gender,private String age;//getter 和setter
}
----------------------------------
public class Food{private String name;private String id;private String price,private String date;//getter 和setter
}
-------
<form method='post' action='url'>
用户名 <input type='text' name='name'>
用户id <input type='text' name='id'>
食品名 <input type='text' name='name'>
食品id <input type='text' name='id'><input type='text' name='gender'><input type='text' name='age'><input type='text' name='price'><input type='text' name='date'>
</form>--------
@requestMap(value={'/order/book'})
public string show(User u,Food f){}
在上述情况下User 和food都不能得到正确的name和id,或者说更本得不到,这要是struts2就方便多了,直接使用点语法 u.name,u.id,f.name,f.id....
为了解决上述问题,有2中方案:
1.是建立一个DTO
优点是可以认为的避免参数的传递,直接改dto的字段名 u_name,u_id,f_name,f_id,gender,age,date,price都要列出来,然后作如下操作
然后修改表单字段和contoller
<form method='post' action='url'>
用户名 <input type='text' name='u_name'>
用户id <input type='text' name='u_id'>
食品名 <input type='text' name='f_name'>
食品id <input type='text' name='f_id'><input type='text' name='gender'><input type='text' name='age'><input type='text' name='price'><input type='text' name='date'>
</form>@requestMap(value={'/order/book'})
public string show(UserFoodDto dto){
//然后拆分,将字段
User u = new User();
Food f = new Food();u.setName(dto.getUname());
f.setName(dto.getname());u.setUid(dto.getUid());
f.setFid(dto.getFid());u.setAge(dto.getAge);
f.setPrice(dto.getPrice);
.....
}
缺点是:如果数据量大,100百个字段,修改的地方自然越多,而且一个dto,拆分也很费力,因此不建议使用在数据量大的情况下
2.使用桥连接,将不同的部分专门封装成一个对象(推荐)
优点:减少了冲突,减少了工作量
缺点:冲突字段/总字段趋近于1时显得没必要(不过,这种情况几乎很少出现,除非是继承关系,但继承关系完全可以使用子类来传值,所以这个问题你就当没遇到过)
表单如下
<form method='post' action='url'>
用户名 <input type='text' name='u_name'>
用户id <input type='text' name='u_id'>
食品名 <input type='text' name='f_name'>
食品id <input type='text' name='f_id'><input type='text' name='gender'><input type='text' name='age'><input type='text' name='price'><input type='text' name='date'>
</form>-----将冲突的字段专门建立一个javaBean
public String UFBridge{private String uname;private String uid;private String fname;private String fid;
}
--------------------------
@requestMap(value={'/order/book'})
public string show(User u,Food f,UFBridge ufb){u.setName(ufb.getUname());f.setName(ufb.getUname());u.setId(ufb.getUid);f.setId(ufb.getFid);
}
3.使用相应的注解@InitBinder,可以做出类似struts2的方案(不推荐,代码量增加,灵活度不够)
如下博文
SpringMVC同名参数绑定问题
springmvc注解形式的开发参数接收
try doing it
SpringMVC 传递相同名称的参数的最佳方法相关推荐
- springmvc 传递和接收数组参数
java url中如何传递数组,springMVC框架controller类如何接收数组参数? 下面介绍一下URL中传递数组参数方法: dd.do?titles[]=col1&titles[] ...
- 在C#中解析命令行参数的最佳方法? [关闭]
构建带有参数的控制台应用程序时,可以使用传递给Main(string[] args) . 过去,我只是索引/循环该数组,并做了一些正则表达式来提取值. 但是,当命令变得更复杂时,解析可能会变得很丑陋. ...
- ajax 入参为list_ajax传递给后台数组参数方式
出自:http://blog.csdn.net/lingxyd_0/article/details/10428785 在项目上用到了批量删除与批量更改状态,前台使用了EasyUI的DataGrid,用 ...
- SpringMVC入门(二)—— 参数的传递、Controller方法返回值、json数据交互、异常处理、图片上传、拦截器
SpringMVC入门(二)-- 参数的传递.Controller方法返回值.json数据交互.异常处理.图片上传.拦截器 参考文章: (1)SpringMVC入门(二)-- 参数的传递.Contro ...
- springMVC获取异步请求的参数,返回异步请求数据(json),跨域访问简单了解,文件上传,与Restful风格
springMVC获取异步请求的参数 JQuery发送异步请求回顾 <a href="javascript:void(0);" id="testAjax" ...
- 【SpringMVC入门】SpringMVC环境搭建、接收参数的几种方式、视图解析器、@ResponseBody
一.SpringMVC 简介 1.SpringMVC 中重要组件 1.1 DispatcherServlet: 前端控制器,接收所有请求(如果配置/不包含jsp) 1.2 HandlerMapping ...
- 【Kotlin】函数类型 ( 函数类型 | 带参数名称的参数列表 | 可空函数类型 | 复杂函数类型 | 带接收者函数类型 | 函数类型别名 | 函数类型实例化 | 函数调用 )
文章目录 I . 函数类型 II . 带参数名的参数列表 III . 可空函数类型 IV . 复杂函数类型解读 V . 函数类型别名 VI . 带 接收者类型 的函数类型 VII . 函数类型实例化 ...
- php 小程序页面传参,介绍小程序中传递参数的实现方法
这篇文章主要介绍了微信小程序 参数传递详解的相关资料,需要的朋友可以参考下 微信小程序的推出,无疑将会在移动互联网行业里再次掀起风浪. 有人会质疑小程序会不会火, 会不会火我不知道, 看微信的用户量即 ...
- request.getParameter和SpringMVC后台控制层获取参数的方式
**1. request.getParameter** 转载于:http://blog.csdn.net/moreorless/article/details/4199677 一. 简单的对比 req ...
最新文章
- 【转】蓝牙物理链路类型:SCO和ACL链路
- ​你可能不知道的7个HTML小技巧
- 墨刀原型制作 位置选择_原型制作不再是可选的
- 子网掩码相关教学 子网掩码快速算法 沉睡不醒blog
- System中不存在类型或命名空间名称Transactions
- python使用shell命令_python 调用shell命令的方法
- oracle procedures批量删除带索引条件数据很慢_redis数据结构、持久化、缓存淘汰策略...
- mcrp 对接软件换
- 区块链 用户身份权限模式 方案
- Tensorflow模型量化(Quantization)原理及其实现方法
- winhex恢复误GHOST系统造成的数据丢失
- 回答朋友关于美团点评业务线工作体验
- 《Unity 3D游戏客户端基础框架》系统设计
- HTML实现手机端适配
- 项目Beta冲刺(3/7)(追光的人)(2019.5.25)
- LTE连接态读取系统消息SIB24疑问
- 基于三相VSR的SVPWM调制
- Android 手机安装有微信,还是提示未安装微信
- 《薛兆丰经济学讲义》阅读笔记|第一节-真实世界 经济学的视角
- 小程序踩坑之地图定位不精准的问题
热门文章
- 进度条小飞机移动动画
- k层交叉检验(k-flod cross-validation)
- Array deduplication
- 我的世界服务器拔刀修复,我的世界拔刀剑怎么修复
- 北林oj-算法设计与分析-Line up in the canteen(两种解法,附思路)
- 阿里云自动java和mysql数据库_阿里云服务器之基于Linux系统部署上线JavaWeb项目和连接MySQL数据库(从购买云服务器到发布JavaWeb项目全套详细流程)...
- java jtable导出txt_如何将jtable中的文本数据保存到文件中
- mysql数据库之单表查询
- WPF设置全局字体和字体嵌入
- 标准差分进化算法matlab程序实现(转载)