关于jstl EL用法的注意点(java.lang.NumberFormatException: For input string: "userName")

在使用jstl tag <c:forEach var="item" items="${managerPurviewList}" begin="0"> 的时候,一般可以用来在页面上展现集合的数据,但是有一点必须要注意的,就是var 和items的含义的问题。

查看api文档,上面只是简单的说明了一下,其实在实现该标签的时候,内部是通过items里面指定的这个集合对象来获取一个Iterator 的,这就是ForEachIterator 。也就是说先把你的items属性的那个集合对象拿出来,然后获取其上面的迭代器,通过该迭代器的next方法得到集合中的第一个元素(当然根据是否配置了start  end 和step迭代的方法少有不同),这里就要注意了,获取到第一个元素以后,它会将该元素作为一个通用的object对象赋值给var属性里面指定的那个变量名称,例如你在var属性里面知道var="item",那么这时候i就是一个object对象。

如果你迭代的是一个list<User>这样的自定义对象的list,那么这时候item会得到一个object,而且该object是一个object【】类型,也就是说,会将list里面的每个user对象的属性值get出来,作为一个object再存放到i所引用的那个object里面去,说到这里,大家就应该明白了,其实该标签在处理list<User>类型的集合的展现问题的时候,是简单的将该集合中的每个具体对象的属性值取出来封装成一个个的object,然后放入item这个object数组中去的,所以,我们在前台jsp页面上展现的时候不能使用$(item.userName)这样的方法来得到对应的值,否则会报java.lang.NumberFormatException: For input string: "userName" 这样的异常的,原因就是因为返回的item是一个object的数组,$(item.userName)这种访问方式是不能用来访问数组的,否则在处理的时候jsp引擎会先将userName这个字符串转换成int以确定数组下标,而在转换的时候就会出现字符串“userName”无法转换成int的异常了。

那么我们该怎么取值呢,应该是一下标来访问数组,也就是item【0】,item【1】,这样的方式,这样渠道的值分别是我们User对象的按照定义先后顺序的各个属性值了。

可见,数据类型是很重要的了,使用不同的数据类型来保存值,那么取值的时候就要使用对应的方法来取值了,否则就会报异常了。

时间: 2024-10-03 20:33:40

关于jstl EL用法的注意点(java.lang.NumberFormatException: For input string: "userName")的相关文章

java.lang.NumberFormatException: For input string: &quot;title&quot;异常

java.lang.NumberFormatException: For input string: "title" 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.

java.lang.NumberFormatException: For input string: &quot;undefined&quot;

在将字符串转换为数字时导致此错误,解决此问题的思路:1.添加Try catch语句,2.判断字符串是否为数字,将介绍java中判断字符串是否为数字的方法的几种方法. 完整错误信息: java.lang.NumberFormatException: For input string: "undefined" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.pars

java.lang.NumberFormatException: For input string:""

今天写了个java的小程序在运行的时候抛出下面的异常:java.lang.NumberFormatException: For input string: "" .定位到源程序中出错的地方: String[] cols = key.toString().split("    ");   return Integer.parseInt(cols[0]) % numPartitions; 通过查询java API 以及百度,了解到抛NumberFormatExcepti

Caused by: java.lang.NumberFormatException: For input string: &quot;&quot;

1.错误描述 java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Long.parseLong(Long.java:453) at java.lang.Long.parseLong(Long.java:483) at org.springfram

java.lang.NumberFormatException: For input string:&quot;filesId&quot;

做项目时候,页面获取出现了这个问题.找了好久一直以为是我字段或者是数据库字段问题导致引起的. 最后才发现是 struts2中jsp我写错了一个参数,一直导致报错.后来改了就好了. 当大家遇到这个问题的时候,记得先看看是不是这个问题,不是的话可以再debug分析下. 对jsp更改的地方,以后要多多注意.自己不要再犯这种低级错误 就是因为这个 变量写错了,导致他找不到塞入数据的泪,所以,下面的一些列 ${freemarkerdetailList.xxxxx}都报 java.lang.NumberFo

Caused by: java.lang.NumberFormatException: For input string: &amp;quot;&amp;quot;

1.错误描写叙述 java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Long.parseLong(Long.java:453) at java.lang.Long.parseLong(Long.java:483) at org.springfr

解决java.lang.NumberFormatException: For input string: &quot;id&quot;

今天,项目突然报"java.lang.NumberFormatException:For input string:"id"",项目框架是spring,springmvc,hibernate,大致意思是类型转换错误,我的id是Integer类型,报错在<c:foreach>里的option里获取值得时候出问题,说明数据类型不对,就去后台dao去找,查看我的sql,一看我查的是表的部分字段,用的hibernate框架,返回的一个List<object

java.lang.NumberFormatException: For input string: &quot;?0&quot;

在使用JAVA IP地址转成长整型方法时出现此错误 这里对场景进行记录,以备日后遇到类似的错误,参考如何解决 错误输出: 错误原因:怀疑此处为"\0"字符 解决方法: java.lang.NumberFormatException: For input string: "?0"

java.lang.NumberFormatException: For input string: &quot;1608020001 &quot; 错误

错误: java.lang.NumberFormatException: For input string: "1608020001 "    at java.lang.NumberFormatException.forInputString(Unknown Source)    at java.lang.Integer.parseInt(Unknown Source)    at java.lang.Integer.parseInt(Unknown Source)    at cn.