首页 > 代码库 > SpringMVC 多个对象的相同字段参数传递的最佳解决方案
SpringMVC 多个对象的相同字段参数传递的最佳解决方案
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=http://www.mamicode.com/{‘/order/book‘})>在上述情况下User 和food都不能得到正确的name和id,或者说更本得不到,这要是struts2就方便多了,直接使用点语法 u.name,u.id,f.name,f.id....
为了解决上述问题,有2中方案:
第一种是建立一个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=http://www.mamicode.com/{‘/order/book‘})>缺点是:如果数据量大,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=http://www.mamicode.com/{‘/order/book‘})>
try doing it
SpringMVC 多个对象的相同字段参数传递的最佳解决方案
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。