java - 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 也没有解析。我真的不知道为什么这些不起作用,但另一个起作用
解决方案
在解析字符串之前,您应该进行空值检查并修剪然后解析。如果 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;
}
}
推荐阅读
- java - 如何使用 payara 服务器 docker POSTBOOT_COMMANDS 为 XX\:OnOutOfMemoryError 创建 JVM 选项
- r - 如何在 R Markdown 中为每个列加粗每个单元格的最小值
- java - 如何在没有 SDK 的情况下为 webjobs 设置警报
- spring - 我正在尝试从请求控制器获取标头信息并读入 IntegrationFlow
- service - 仅当进入信标区域时,如何启用 altbeacon android library forground 服务?
- javascript - 如何使用 React (ref) 获得元素位置?
- ios - 如何检查服务器信任期间使用的证书透明度
- c# - 如何在 Xamarin.forms 中制作没有标题的选项卡栏
- powershell - Get-UnifiedGroup 和 Get-Teams:如何在 powershell 中制作脚本并将其导出到 csv 文件
- typescript - 强制因变量类型的最佳/正确模式