2018-08-01下午,admin线下测试提报出如下异常
线下debug发现问题接口代码如下:
public SqlRet addProcessor(int processorType, String processorContent, String pythonScript, long processorWindow) {
...
}
接口在如下地方调用出现异常。
sqlRet = wmFeatureService.addProcessor(processorType, processorContent, pythonScript, processorWindow);
前端页面代码如下:
var processorId = $("#processorId").val();
var processorType = document.getElementById("processorType").options[document.getElementById("processorType").selectedIndex].value;
var processorContent = $("#processorContent").val();
var pythonScript = $("#pythonScript").val();
var processorWindow = $("#processor-window").val();
var submitData = {
"processorId": processorId,
"processorType": processorType,
"processorContent": processorContent,
"pythonScript": pythonScript,
"processorWindow": processorWindow
};
$.ajax({
url: 'processorcheck',
type: 'post',
data: submitData,
success: function (result) {
}
}
前端页面中,除掉processorId,processorType,processorContent不为空之外,其他值都可以为空值传到后台。后台在调用addProcessor接口的时候,把值为空的processorWindow传到了给了long processorWindow,导致报出NullPointerException。
long是基本数据类型,默认值是0,不能为null。Long是long的封装类型,默认值是null。
需要将long类型转成Long。或者在前端页面的代码中为processorWindow加上默认值。
if(processorWindow==null||processorWindow===""){
processorWindow=1000;
}