jsp实验中:tag文件报java.util.ArrayList cannot be cast to java.lang.String

jsp实验中:tag文件报java.util.ArrayList cannot be cast to java.lang.String,第1张

jsp实验中:tag文件报java.util.ArrayList cannot be cast to java.lang.String 描述

解决思路

(1)第一步:可以看到信息中主要是Exception描述:
他描述23行处理出问题,23行是调用tag文件,也就是tag文件的处理出了问题。
(2)然后第二步,看root cause。可以看到最顶部提到ArrayList cannot be cast to String。
这就是关键,问题在哪里就靠这句话。
(3)最终定位问题是tag文件中不使用request设置attribute,而我使用了这个。这是一个问题。另一个问题是variable默认是返回String,但是我要返回ArrayList,没有做相应的设置,最终出现这个结果。修改后问题解决。
variable默认返回类型如下修改:

后言

解决这个问题用了将近1.5个小时,还是对tag文件的使用不够熟练。
出现问题后,先在代码里加system.out.println确定哪部分没执行。
然后,使用debug观察变量的变化情况,以及语句执行情况,发现数据库可以连接,也可以查询出来结果,但是始终有上图的错误说是ArrayList不能转String。从这里出发逐个排查问题,但是就是在认知范围里代码是正确的,为什么不行呢?没办法了去找书吧,打开jsp的课本翻到tag那一节。
恍然大悟,有一句话“Tag文件将对象的名字及其引用存储到jspContext中,JSP页面才可以使用该对象。”怪不得我在排查问题中发现设置到request的attribute中的值,输出的是null。然后接着往下读,variable默认返回的是String类型,而我要返回的是ArrayList,正是上面的问题信息,至此,问题得解。这也是书籍一个重要作用之一吧。。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5564223.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存