解决Spring Mvc中接受参数绑定重名的方法
html页面
<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='age'> <input type='text' name='price'> </form>
实体类
public class User{ private String name; private String id; private Integer age; //getter 和setter } ---------------------------------- public class Food{ private String name; private String id; private Double price, //getter 和setter }
controller
@requestMap(value={'/order/book'}) public string show(User u,Food f){}
在上述情况下User 和food都不能得到正确的name和id,或者说更本得不到
1.建立一个中间桥梁, 拆分有所的属性
建立一个中间桥梁UserFoodDto对象
public class UserFoodDto{ private String uid; //用户id private String uname; //用户名 private String fid; //食物id private String fname; //食物名称 private Double price, //食物价格 private Integer age; //用户年龄 //getter 和setter }
修改前台页面的 name值
<form method='post' action='url'> 用户id <input type='text' name='uid'> 用户名 <input type='text' name='uname'> 食品id <input type='text' name='fid'> 食品名 <input type='text' name='fname'> <input type='text' name='age'> <input type='text' name='price'> </form>
controller
@requestMapping(value={'/order/book'}) public string show(UserFoodDto dto){ //创建用户和食物实例 User u = new User(); Food f = new Food(); //分别设置属性 u.setUid(dto.getUid()); f.setFid(dto.getFid());
u.setName(dto.getUname()); f.setName(dto.getFname()); u.setAge(dto.getAge); f.setPrice(dto.getPrice); ..... }
缺点是:如果数据量大,100百个字段,修改的地方很多,而且一个dto,拆分也很费力,因此不建议在数据量大的情况下使用
2.使用桥连接,拆分冲突的属性
前端页面
<form method='post' action='url'> 用户名 <input type='text' name='uname'> 用户id <input type='text' name='uid'> 食品名 <input type='text' name='fname'> 食品id <input type='text' name='fid'> <input type='text' name='age'> <input type='text' name='price'> </form>
中间桥梁类
---将冲突的字段专门建立一个javaBean public Class UFBridge{ private String uname; private String uid; private String fname; private String fid; }
controller
@requestMapping(value={'/order/book'}) public string show(User u,Food f,UFBridge ufb){ u.setId(ufb.getUid); u.setName(ufb.getUname()); f.setId(ufb.getFid); f.setName(ufb.getUname());
}
3.创建一个类包含User和Food
vo对象
public class UserFoodVo{ private User user; private Food food; //省略getter和setter方法 }
前台页面
<form method='post' action='url'> 用户名 <input type='text' name='user.name'> 用户id <input type='text' name='user.id'> 食品名 <input type='text' name='food.name'> 食品id <input type='text' name='food.id'> <input type='text' name='user.age'> <input type='text' name='food.price'> </form>
controller
@requestMapping(value={'/order/book'}) public string show(UserFoodVo vo){}