我的controller接收的是一个对象,对象中有一个list集合,集合中放的是另一个对象,
@ResponseBody
public DWZResult testCardSave(Model model,Bean1 b) {
...
}
Model如下:
public class Bean1{
private Long id;
private List<Bean2> beanlist = new ArrayList<>();
...
}
public class Bean2{
private Long id;
private String expResultDesc;
private String expAnnexId;
private Integer judge;
...
}
正常表单按钮提交时参数是这样的:
因为要用Ajax提交,要自定义表单数据,刚开始这样写的:
var bean = [{
id: $td.eq(11).find("input").val(),
expResultDesc: $td.eq(8).find("textarea").val(),
expAnnexId: $td.eq(9).find("input.annexUploader").val(),
judge: $td.eq(10).find("select").val()
}];
var data = {
id: '${bean.id!}',
beanlist: bean
}
$.ajax({
type: 'POST',
url: $form.attr("action"),
data: data,
dataType: "json",
cache: false,
success: function (json) {
...
},
error: function () {
...
}
});
然后就操作失败(Property referenced in indexed property path 'beanlist[0][expAnnexId]' is neither an array nor a List nor a Map;
),查看表单数据是这样的,感觉很接近,但又很遥远:
问了前端大神,直接这样写就好了:
var data = {};
data['id'] = '${bean.id!}';
data['beanlist[0].id'] = $td.eq(11).find("input").val();
data['beanlist[0].expResultDesc'] = $td.eq(8).find("textarea").val();
data['beanlist[0].expAnnexId'] = $td.eq(9).find("input.annexUploader").val();
data['beanlist[0].judge'] = $td.eq(10).find("select").val();
然后就和按钮提交一样了。
版权声明:本文为liyaowen505原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。