Java教程

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)第一步:可以看到信息中主要是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,正是上面的问题信息,至此,问题得解。这也是书籍一个重要作用之一吧。。

这篇关于jsp实验中:tag文件报java.util.ArrayList cannot be cast to java.lang.String的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!