首页 > 解决方案 > Integer.parseInt(request.getParamerter("") thorws java.lang.NumberFormatException: null

问题描述

我正在尝试将用户输入的数据发布到 MySQL 数据库中。我正在使用具有 doPost 方法的 Servlet 和具有不同多个输入的 JSP,所有其他字符串输入都很好,但两个 int 值不会解析。

这是带有输入的表单,它确实有其他输入,所有类型的文本或 URL,savemovie 是被调用的 Servlet。

<section id="forms">
   <form name="movies" id="addmovie" action="savemovie" method="post">
            <label for="length">Länge</label>
            <input type="text" name="length" id="length">

            <label for="release">release</label>
            <input type="text" name="release" id="release">

            <input type="submit" value="Send">
   </form>

这是小服务程序

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException {

     int length = Integer.parseInt(request.getParameter("length"));
     int release =Integer.parseInt(request.getParameter("release"));

稍后,这两个值被添加到将它们和其他值添加到数据库的查询中,即使我在代码的另一部分使用完全相同的方法(doget 方法),由于某种原因,这两个值都没有被解析根据用户输入的 ID 获取数据),它工作得很好

错误消息是“java.lang.NumberFormatException:null”我确实尝试过 try/catch 也没有解析。我真的不知道为什么这些不起作用,但另一个起作用

标签: javaexceptionservlets

解决方案


在解析字符串之前,您应该进行空值检查并修剪然后解析。如果 NumberFormatException 发生处理它。

每当您遇到这样的麻烦时,请放置调试语句并分析
实际导致异常的原因。null 或空或空格或字符串?然后,您可以轻松处理它。

Integer length= parseToNumber(request.getParameter("length"));
//check for not null and proceed

receivedParam = request.getParameter(request.getParameter("release"));
Integer release= parseToNumber(receivedParam);
//check for not null and proceed


// returns null if receivedParam = "", "some string", null or number with space
private Integer parseToNumber(String receivedParam)
{
    System.out.println("received param:"+receivedParam);
    if (receivedParam != null && !receivedParam.trim().isEmpty())
    {
        try
        {
            return Integer.parseInt(receivedParam.trim());
        }
        catch (NumberFormatException nfe)
        {
            System.out.println("received param is not a number");
            return null;
        }
    }
    else
    {
        System.out.println("received param is null or empty");
        return null;
    }
}

推荐阅读