Json Delete方法产生空指针异常

Json 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

我从reactjs向spring boot应用程序发出了一个简单的请求,然后发生了以下错误

java.lang.NullPointerException:null

Product在reactjs中不是null,但我认为问题在于调用部分

弹簧靴

CrosConfig类

控制器类

reactjs

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
                })
            });
    }