我正在尝试将用户输入的数据发布到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尝试也未解析。我真的不知道为什么这些都不起作用,而另一个却不起作用
答案 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;
}
}