Integer.parseInt(request.getParamerter(“”)约束java.lang.NumberFormatException:null

时间:2019-08-29 22:57:51

标签: java exception servlets

我正在尝试将用户输入的数据发布到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>

这是Servlet

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

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

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

错误消息为“ java.lang.NumberFormatException:null”我尝试使用try / catch尝试也未解析。我真的不知道为什么这些都不起作用,而另一个却不起作用

1 个答案:

答案 0 :(得分:0)

在解析字符串之前,应先进行null检查,然后修剪并解析。如果发生NumberFormatException,请进行处理。

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

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