NumberFormatException在Javaservlet中获取数组中的simplecart项、数量、价格和grandtotal
我已经在我的项目中实现了simplecart 点击“结帐”按钮,它就转到了PayPal,这是我不想看到的。因此,我更改了simplecart.js文件中的操作URL以指向我的servletNumberFormatException在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中得
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);