本文共 1987 字,大约阅读时间需要 6 分钟。
在开发过程中我们经常会遇到表单提交数据时,具有相同属性名的两个对象。
先创建两个对象,用户和产品
public class User { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
public class Product { private Integer id; private String productName; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getProductName() { return productName; } public void setProductName(String productName) { this.productName = productName; }}
在使用springmvc的时候对于具有相同属性两个bean提交数据是,我可以在后台Controller中增加InitBinder对前端传递的参数进行绑定
@InitBinder("user") public void initUser(WebDataBinder binder){ binder.setFieldDefaultPrefix("user."); } @InitBinder("product") public void initProduct(WebDataBinder binder){ binder.setFieldDefaultPrefix("product."); }
后台使用下面代码获取参数即可
@RequestMapping(value = "sava") @ResponseBody public String sava(User user,Product product){ return user.toString()+" "+product.toString(); }
前台传递参数是对应使用后端 InitBinder 中prefix作为前缀即可
这样在后端Controller就可以获取对应用户id为1的张三购买产品id为100的火箭
在spingboot中如果需要用到上面方式进行参数传递就需要自己在封装一次bean
public class BeanForm { private User user;//对象名称必须和前端的控件name的前缀名称一致 private Product product; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public Product getProduct() { return product; } public void setProduct(Product product) { this.product = product; }}
改造一下spingboot的Controller
@RequestMapping(value = "save") @ResponseBody public String save(BeanForm beanForm){ return beanForm.getUser().toString()+" "+beanForm.getProduct().toString(); }
转载地址:http://gqmdi.baihongyu.com/