背景:系统架构还是用的ssm+bootstrap。前端需要将对象放在list集合中,然后传输到后台进行处理,于是用了
JSON.stringify(batchMaintainBillInfoList)方法将json传到后台直接转化为list
//前端代码
$('#batchMaintainButton').click(function () {
var batchMaintainBillInfoList = [];
$("input[name='billNo']").each(function() {
var count = $(this).parent().parent().attr('id');
batchMaintainBillInfoList.push({id:$('#id'+count).val(), billNum: $('#billNum'+count).val(), billCode: $('#billCode').val(),
billUser:$('#billUser'+count).val(),billTime: $('#billTime'+count).val(),
remarks: $('#remarks'+count).val(),billImage: $('#billImage'+count).val()});
});
if (batchMaintainBillInfoList==null || batchMaintainBillInfoList.length==0){
showTip("维护信息不能为空","error" ,2000,0);
return false;
}
$.ajax({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
type: 'POST',
url: '${ctx}/finance/settle/settleBillInfoInvoicing/batchMaintainBillInfoSave',
data: JSON.stringify(batchMaintainBillInfoList),
success: function (data) {
if(data.res_code==1){
}else{
}
top.$.jBox.tip(data.res_desc);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
top.$.jBox.tip(errorThrown);
}
});
});
//后端代码
//前端传输的数据,后端可以直接用list集合来接收
@RequestMapping(value = "batchMaintainBillInfoSave",method = RequestMethod.POST)
@ResponseBody
public IntfzResp batchMaintainBillInfoSave(@RequestBody List batchMaintainBillInfoList) {
StringBuffer message = new StringBuffer();
for (BatchMaintainBillInfo batchMaintainBillInfo : batchMaintainBillInfoList) {
try {
}catch (Exception e){
}
}
if (StringUtils.isBlank(message.toString())){
message.append("批量维护发票信息完成");
}
return IntfzResp.resSuccess(message.toString());
}
提交请求之后页面报错http 415 unsupported media type,由于是第一次用JSON.stringify(batchMaintainBillInfoList)这种方式,总是以为自己这里写错了,而且百度一下,发现好多用我这个方法导致415的,就更加确定了是因为这个原因导致415的。
后来请教同事,同事让我把我的提交部分逻辑给注释掉,发现没有提交的时候还是会报这个错误。
于是想到我的点击按钮的类型,是submit
当type是submit时会直接将表单提交,但是我后台接收参数的话,是没有办法这样直接将表单接收下去的,需要处理一下,所以导致报错415,后台服务无法解析。后来我将type改为button就好了。
PS:这个bug启发了我一个思路:发现问题的时候,先要确定是什么导致bug,而不是盲目觉得哪里不熟,肯定是哪里的问题云云,这个问题,很简单,但是花费了我很久的时间,觉得很浪费。思路还是要开阔一些。
这个帖子希望能够帮到大家。每天进步一点!大家共勉!加油!!!