(2012-09-13 21:16:55)
标签:
杂谈分类:
JAVA一般认为session中是不能直接传ArrayList对象的,因为在session封装数据之后,数据类型都是Object。在取值时会遇到麻烦。如下: 数据封装:
ArrayList<EmpBean> list ;
request.getSession().setAttribute("list",list);
脚本文件中取出数据:
ArrayList<EmpBean> list = (ArrayList<EmpBean>)session.getAttribute("list");
这时,如果你想通过遍历的方式去取出list中封存的EmpBean对象,就不行了,编译后报错为:
-------------------------------------------------------------------------
严重: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occurred at line: 37 in the jsp file: /EmpList.jsp
Generated servlet error:
Syntax error on token "<", invalid AssignmentOperator
An error occurred at line: 37 in the jsp file: /EmpList.jsp
Generated servlet error:
Syntax error on token "=", != expected
An error occurred at line: 37 in the jsp file: /EmpList.jsp
Generated servlet error:
Syntax error on token ">", Expression expected after this token
-------------------------------------------------------------------------
通常会认为是jsp中嵌入的脚本文件出了问题,比如括号不匹配、标点有误或者java代码书写出错等等。但是事实上是编译器无法处理ArrayList数据包的强制类型装换,因而出错。
解决办法如下:
在脚本文件中取出数据时不要直接转换为ArrayList,而是分两步进行类型转换,如下:
-------------------------------------------------------------------------
ArrayList list = (ArrayList)session.getAttribute("list");
for(int i=0;i
EmpBean bean = (EmpBean)list.get(i);
}//然后就可以对bean对象进行操作了,系统不会再报错误
-------------------------------------------------------------------------
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。