Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NumberFormatException在Javaservlet中获取数组中的simplecart项、数量、价格和grandtotal_Java_Servlets_Numberformatexception_Simplecart - Fatal编程技术网

NumberFormatException在Javaservlet中获取数组中的simplecart项、数量、价格和grandtotal

NumberFormatException在Javaservlet中获取数组中的simplecart项、数量、价格和grandtotal,java,servlets,numberformatexception,simplecart,Java,Servlets,Numberformatexception,Simplecart,我已经在我的项目中实现了simplecart 点击“结帐”按钮,它就转到了PayPal,这是我不想看到的。因此,我更改了simplecart.js文件中的操作URL以指向我的servlet action = opts.sandbox ? "cart_checkout" :"cart_checkout", method = opts.method === "GET" ? "GET" : "POST"; 它调用servlet,但我在servlet中得

我已经在我的项目中实现了simplecart

点击“结帐”按钮,它就转到了PayPal,这是我不想看到的。因此,我更改了simplecart.js文件中的操作URL以指向我的servlet

action = opts.sandbox ? "cart_checkout" :"cart_checkout",
                        method = opts.method === "GET" ? "GET" : "POST";
它调用servlet,但我在servlet中得到了NumberFormatException

action = opts.sandbox ? "cart_checkout" :"cart_checkout",
                        method = opts.method === "GET" ? "GET" : "POST";
Servlet

package com.kunal.servlet;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class CartCheckout
 */
@WebServlet("/CartCheckout")
public class CartCheckout extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public CartCheckout() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String count=request.getParameter("ItemCount");
        ArrayList<String> item_detail=new ArrayList<String>();
        int cnt=Integer.parseInt(count);
        for(int i=1;i<cnt+1;i++)
        {
            String name=request.getParameter("item_name_");
            item_detail.add(name);
            String price=request.getParameter("item_price_");
            item_detail.add(price);
            String qty=request.getParameter("item_quantity_");
            item_detail.add(qty);
        }
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String count=request.getParameter("ItemCount");
        ArrayList<String> item_detail=new ArrayList<String>();
        int cnt=Integer.parseInt(count);
        for(int i=1;i<cnt+1;i++)
        {
            String name=request.getParameter("item_name_");
            item_detail.add(name);
            String price=request.getParameter("item_price_");
            item_detail.add(price);
            String qty=request.getParameter("item_quantity_");
            item_detail.add(qty);
        }
    }

}

您应该捕获发送到Web服务的请求

在该错误中,您可以看到得到一个
NumberFormatException:null
。这表明您的
count
字符串为
null

String count=request.getParameter("ItemCount");
当ItemCount不是请求的参数时,可能会发生这种情况


最好的做法是测试
count
(=“ItemCount”参数)代码中的空值,这样您就可以向客户端返回一个好看的错误。

因为您的count变量为空,所以可以通过

String count=request.getParameter("ItemCount");
if(count.length()>0){
   int cnt=Integer.parseInt(count.trim());
   // other logic
}
 else{
       //do nothing
}

问题的原因非常简单:

int cnt=Integer.parseInt(count);
从堆栈跟踪中可以清楚地指出这一点:

at com.kunal.servlet.CartCheckout.doPost(CartCheckout.java:53)
一个简单的解决方案是根据null检查计数,因此将
doPost(…)
实现更改为:

    /**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    String count=request.getParameter("ItemCount");
    ArrayList<String> item_detail=new ArrayList<String>();
    int cnt= count == null 0 : Integer.parseInt(count);
    for(int i=1;i<cnt+1;i++)
    {
        String name=request.getParameter("item_name_");
        item_detail.add(name);
        String price=request.getParameter("item_price_");
        item_detail.add(price);
        String qty=request.getParameter("item_quantity_");
        item_detail.add(qty);
    }
}
int cnt= StringUtils.isNotBlank(count) 0 : Integer.parseInt(count);