表单获取id值后出现的问题

时间:2022-02-20 19:18:43
希望各位能帮忙解决,谢谢!急!!!
String id1=smartupload.getRequest().getParameter("id").trim();
int id;
if(id1==null||id1==" "){
id=0;
}else{
// id=Integer.valueOf(id1).intValue();
id=Integer.parseInt(id1);
}

出现问题为:
java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:468)
at java.lang.Integer.parseInt(Integer.java:497)
at www.oraffi.com.control.HandleEditOrder.continueDoPost(HandleEditOrder.java:100)
at www.oraffi.com.control.HandleEditOrder.doPost(HandleEditOrder.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
可我觉得这问题是不应该出现的,应该是正常的不是?就是不知道问题出在哪,非常需要你们的帮忙,谢谢!

20 个解决方案

#1


if(id1==null||id1==" ")

应修改为

if(id1==null || id1.equals(""))

#2


id可能为空

#3


引用 2 楼 wyn827743398 的回复:
id可能为空

可是我已经用了if else判断了,如果值为空的话,我直接把0复制给id 啊

#4


引用 1 楼 rumlee 的回复:
if(id1==null||id1==" ")

应修改为

if(id1==null || id1.equals(""))

试过了,不管用,其实这个我没有引用SmartUpload这个类及对象时,用if else判断id的值时完全没有问题的,可是用SmartUpload上传文件时,就出现了这个问题,是什么问题呢?

#5


你打印看一下:id1 的值是什么?

#6


引用 5 楼 licip 的回复:
你打印看一下:id1 的值是什么?

id的值不为空,是所在数据库表的记录数,但是其他类似用Integer.parseInt()转换的一样出现问题,int quality_a=Integer.parseInt(quality==null||quality.equals("")?"0":quality);
这是从表单获取的值,若值为空时,就出现以上异常了。

#7


太难了,帮你顶。

#8


id1==null||"".equals(id1.trim())

#9


id的值可能不是数字,Integer.parseInt会跳异常

#10


引用 9 楼 wyn827743398 的回复:
id的值可能不是数字,Integer.parseInt会跳异常

可当我什么都不输入时,我就直接复制0给id啊,这明显是数字

#11


if(id1==null||id1==" ")这句貌似有问题
如果是个字符串  就不能用==来判断 .equels("")
if(id1==null||id1.toString.trim().equels(""))

#12


可能js就没把id字符串提交过来呢

#13


if(id1==null||id1==" ")

应修改为

if(null== id1|| "".equals(id1)) 

你的报错是无法转为为数字
你的id1有问题啊

#14


id1==" " 

#15


[code=java][String id1 = smartupload.getRequest().getParameter("id").trim();
int id;
try {
id = Integer.parseInt(id1);
} catch (Exception e) {
id = 0;
}/code]

#16


建议使用commons-lang3包里面的NumberUtils工具类,isEmpty()

#17


int 类型的id需要一个初始值,你可以这样写,先将id=0;然后判断id1不为空是将id1的值再传给id就可以了,不妨一试

#18


String id1=smartupload.getRequest().getParameter("id").trim();




我无语了!!!

这么明显的错误大家居然都没有发现!!

代码分明还没有执行到if  else 里面好伐!!



下个断点很明显救出来了!




获取的时候不能trim(),为什么!


因为你获取的可能是null,null怎么可以trim()
呢!




哦,然来是这样的!

#19


try catch 捕捉异常
断点调试
基本上BUG是这么一个解决方法

#20


牛逼的判断啊

#1


if(id1==null||id1==" ")

应修改为

if(id1==null || id1.equals(""))

#2


id可能为空

#3


引用 2 楼 wyn827743398 的回复:
id可能为空

可是我已经用了if else判断了,如果值为空的话,我直接把0复制给id 啊

#4


引用 1 楼 rumlee 的回复:
if(id1==null||id1==" ")

应修改为

if(id1==null || id1.equals(""))

试过了,不管用,其实这个我没有引用SmartUpload这个类及对象时,用if else判断id的值时完全没有问题的,可是用SmartUpload上传文件时,就出现了这个问题,是什么问题呢?

#5


你打印看一下:id1 的值是什么?

#6


引用 5 楼 licip 的回复:
你打印看一下:id1 的值是什么?

id的值不为空,是所在数据库表的记录数,但是其他类似用Integer.parseInt()转换的一样出现问题,int quality_a=Integer.parseInt(quality==null||quality.equals("")?"0":quality);
这是从表单获取的值,若值为空时,就出现以上异常了。

#7


太难了,帮你顶。

#8


id1==null||"".equals(id1.trim())

#9


id的值可能不是数字,Integer.parseInt会跳异常

#10


引用 9 楼 wyn827743398 的回复:
id的值可能不是数字,Integer.parseInt会跳异常

可当我什么都不输入时,我就直接复制0给id啊,这明显是数字

#11


if(id1==null||id1==" ")这句貌似有问题
如果是个字符串  就不能用==来判断 .equels("")
if(id1==null||id1.toString.trim().equels(""))

#12


可能js就没把id字符串提交过来呢

#13


if(id1==null||id1==" ")

应修改为

if(null== id1|| "".equals(id1)) 

你的报错是无法转为为数字
你的id1有问题啊

#14


id1==" " 

#15


[code=java][String id1 = smartupload.getRequest().getParameter("id").trim();
int id;
try {
id = Integer.parseInt(id1);
} catch (Exception e) {
id = 0;
}/code]

#16


建议使用commons-lang3包里面的NumberUtils工具类,isEmpty()

#17


int 类型的id需要一个初始值,你可以这样写,先将id=0;然后判断id1不为空是将id1的值再传给id就可以了,不妨一试

#18


String id1=smartupload.getRequest().getParameter("id").trim();




我无语了!!!

这么明显的错误大家居然都没有发现!!

代码分明还没有执行到if  else 里面好伐!!



下个断点很明显救出来了!




获取的时候不能trim(),为什么!


因为你获取的可能是null,null怎么可以trim()
呢!




哦,然来是这样的!

#19


try catch 捕捉异常
断点调试
基本上BUG是这么一个解决方法

#20


牛逼的判断啊

#21