NumberFormatException异常javaWEB,jsp的EL表达式异常,的解决方法

类似于代码如:

String id=req.getParameter("id");
int ID=Integer.valueOf(id);
String sql="SELECT * FROM commodity WHERE id=? ";
Object[] params={ID};
List<Commodity> list=mySql.Query(sql,params,Commodity.class);
req.setAttribute("Commodity", list);
req.getRequestDispatcher("/WEB-INF/jsp/Certain_commodity.jsp").forward(req, resp);


引用的类Commodity:

@Getter@Setter@ToString
public class Commodity {

String commodity_image;

...

}


代码没有问题

jsp:

${Commodity.commodity_image}

当你访问了此url:

严重: Servlet.service() for servlet jsp threw exceptionjava.lang.NumberFormatException: For input string: "commodity_image" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:492) at java.lang.Integer.parseInt(Integer.java:527) at javax.el.ListELResolver.coerce(ListELResolver.java:163) at javax.el.ListELResolver.getValue(ListELResolver.java:51)

...

它报了一个字符串转int类型的异常

但是网页上出现了:

org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/Certain_commodity.jsp at line 16

13: <body>
14: 	
15: 		<div class="img">
16: 			<img src="${Commodity.commodity_image}">
17: 		</div>
18: 	<div class="words">
19: 		


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:580)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)

	...
Sql语句没有问题经过测试,id=1或者id="1"都可以执行不报错,那么究竟是哪里错了?


解决方案:


<c:forEach items="${Commodity}" var="Comm">
<div class="img">
<img src="${Comm.commodity_image}">
</div>
</c:forEach>


加一个forEach就可以了,无论你想获取的是一个值也好多个值也罢,只要你attribute的是一个集合那么必须用forEach遍历取到!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NumberFormatException异常是由于将String类型的变量强制转换为int类型时发生失败导致的异常。原因是当用户输入非数字类型的数据时,在查询项目编号时无法找到对应的数据,并在后台的Controller中抛出NumberFormatException异常。为了处理这个异常,可以使用try-catch代码块,try中放置可能会发生异常的代码,catch中放置对异常的处理操作。另外,前台传递到后台的参数可以通过@RequestParam注解进行接收,然后对参数进行强制转换为int类型。然而,直接使用Integer.parseInt方法进行转换可能无法成功,因为String字符串包含中英文字符,不是纯数字。解决NumberFormatException异常方法之一是调用StringUtils.isNumeric(String str)方法,该方法可以判断一个字符串是否为纯数字。 StringUtils.isNumeric方法返回一个boolean值,如果字符串为数字则返回true,否则返回false。此方法可以帮助解决NumberFormatException异常。此外,StringUtils类还提供了isDigit(char ch)方法,用于检测指定字符是否为数字。该方法的返回值也是boolean类型,可以判断字符是否为数字。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [查询项目编号时关于处理NumberFormatException异常的问题](https://blog.csdn.net/zhang150114/article/details/88842931)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值