Json Delete方法产生空指针异常
我从reactjs向spring boot应用程序发出了一个简单的请求,然后发生了以下错误 java.lang.NullPointerException:null Product在reactjs中不是null,但我认为问题在于调用部分 弹簧靴 CrosConfig类 控制器类 reactjsJson Delete方法产生空指针异常,json,reactjs,ajax,spring,spring-boot,Json,Reactjs,Ajax,Spring,Spring Boot,我从reactjs向spring boot应用程序发出了一个简单的请求,然后发生了以下错误 java.lang.NullPointerException:null Product在reactjs中不是null,但我认为问题在于调用部分 弹簧靴 CrosConfig类 控制器类 reactjs deleteProduct=(product)=>{ console.log(`${product.productId}`) console.log(`${produ
deleteProduct=(product)=>{
console.log(`${product.productId}`)
console.log(`${product.productName}`)
fetch('http://localhost:9090/products/delete',{
method:'DELETE',
headers:{
'content-type':'application/json'
},
body:JSON.stringify({
product:product
})
})
.then(()=>{
this.setState({
isLoaded:true
})
},error=>{
this.setState({
isLoaded:true,
error
})
});
this.getAllProducts();
}
堆栈跟踪
您提供的堆栈跟踪显示,
NullPointerException
实际上是由您自己的代码(在else语句中)引发的。因此,控制器方法的product
参数不是null,而是if
条件的计算结果为false
。所以这里没有问题。谢谢Michal Zoiber和其他人,不管怎样,问题出在请求正文中。下面的方法给出了解决方案
fetch('http://localhost:9090/products/delete',{
method:'DELETE',
headers:{
'content-type':'application/json'
},
body:JSON.stringify(product)
})
.then(()=>{
this.setState({
isLoaded:true
},()=>{
this.getAllProducts();
})
},error=>{
this.setState({
isLoaded:true,
error
})
});
}
您的控制台(我的意思是,您实际执行spring boot应用程序的控制台)中是否有堆栈跟踪?此外,您的代码片段不会显示控制器的
productService
字段是如何定义的。建议:不要在else语句中抛出NullPointerException
,而是使用更具体的异常类型,如IllegalArgumentException
。我将更新stacktraceAs,因为代码段中的行没有编号,请指向控制器的第54行好吗?第54行-->抛出新的NullPointerException();嗯,NullPointerException是由代码抛出的,即else中的throw语句。因为product
为空,所以没有执行该语句,这是因为您编写的条件。所以你的问题到底是什么?
deleteProduct=(product)=>{
console.log(`${product.productId}`)
console.log(`${product.productName}`)
fetch('http://localhost:9090/products/delete',{
method:'DELETE',
headers:{
'content-type':'application/json'
},
body:JSON.stringify({
product:product
})
})
.then(()=>{
this.setState({
isLoaded:true
})
},error=>{
this.setState({
isLoaded:true,
error
})
});
this.getAllProducts();
}
2020-09-15 14:44:33.265 ERROR 2396 --- [nio-9090-exec-7] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException: null
at com.benz.assignment.web.controller.ProductController.deleteProduct(ProductController.java:54) ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:an]............
fetch('http://localhost:9090/products/delete',{
method:'DELETE',
headers:{
'content-type':'application/json'
},
body:JSON.stringify(product)
})
.then(()=>{
this.setState({
isLoaded:true
},()=>{
this.getAllProducts();
})
},error=>{
this.setState({
isLoaded:true,
error
})
});
}