第一步:创建后台接收对象
public class ProductInfo extends Product implements Serializable {
private List<Taste> tasteList;
public List<Taste> getTasteList() {
return tasteList;
}
public void setTasteList(List<Taste> tasteList) {
this.tasteList = tasteList;
}
}
第二步:Controller创建接收前端数据方法
@RequestMapping("/edit")
@ResponseBody
public ResultInfo<Boolean> edit(
ProductInfo productInfo
){
if(productInfo.getTasteList()!=null&&productInfo.getTasteList().size()>0){
List<Taste> tasteList=productInfo.getTasteList();
for(Taste taste:tasteList){
iTasteService.updateById(taste);
}
}
boolean a=iProductService.updateById(productInfo);
return new ResultInfo<>(a);
}
第三步:前端传值
其中List填值如下
form.on("submit(addProduct)",function(data){
//弹出loading
var index = top.layer.msg('数据保存中,请稍候...',{icon: 16,time:false,shade:0.8});
var productInfo=data.field;
$('#tasteList .item').each(function(index,item){
productInfo["tasteList[" + index + "].tasteImg"] =$('.imgDiv img',this).attr('src');
productInfo["tasteList[" + index + "].type"] =$('.type',this).val();
productInfo["tasteList[" + index + "].name"] =$('.name',this).val();
productInfo["tasteList[" + index + "].id"] = $(this).attr("itemId");
})
...省略
})
后台接收到数据
下面附上本人js方法失败尝试
var tasteList=[];
$('#tasteList item').each(function(){
var Taste={};
Taste.tasteImg=$('.imgDiv img',this).attr('src');
Taste.type=$('.type',this).val();
Taste.name=$('.name',this).val();
Taste.id=$(this).attr("itemId");
tasteList.push(tasteList);
})
data.field.tasteList=tasteList;
前端报错 Maximum call stack size exceeded
至此,本次操作记录完成.本次博客纯属个人代码记录,若有好的方法或不同意见,请在评论中探讨 |