ajax传undefined值,后台dto接收报错 not a valid Long value;
最近遇到一个报错
JSON parse error: Cannot deserialize value of type java.lang.Long
from String “undefined”: not a valid Long value; nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type java.lang.Long
from String “undefined”: not a valid Long value
先上代码
ajax
var data = {
"mailId": mail_id,
"delMailPid": delMailPid,
};
$.ajax({
type: 'POST',
url: "changeReissue",
contentType: 'application/json', //设置请求头信息
dataType: "json",
data: JSON.stringify(data),
success: function (result) {
}})
dto
public class GmMailFlowDTO {
/**
*
*/
private Long pid;
/**
* 事件时间
*/
private Integer eventTime;
/**
* todo 删除流水表字段主键
*/
private Long delMailPid;
/**
* todo 主表主键
*/
private Long gmMailPid;
/**
* todo 增加流水表主键
*/
private Long addMailPid;
}
分析
这个时候假如ajax中 delMailPid这个变量为 undefined 时候 后端会报上面错误,
原因
因为Long不能接收为空。所以会报错
你有几种方案解决
1、修改dto中类型
2、用不到为空参数的尽量删除,不要保留冗余字段
3、不要让其 Long类型的参数为空