在a.jsp这样写,把List set到session里面,然后重定向到b.jspshoppingcart sc = new shoppingcart();
sc.setCommid("comm00005");
sc.setCommname("呵呵");
sc.setAmount(10);
List getarray = new ArrayList();
getarray.add(sc);
session.setAttribute("sp",getarray);
response.sendRedirect("b.jsp");在b.jsp里面这样写 List list=(List)session.getAttribute("sp");
shoppingcart sc=(shoppingcart )list.get(0);这样就报
java.lang.ClassCastException
为什么会这样呢?
sc.setCommid("comm00005");
sc.setCommname("呵呵");
sc.setAmount(10);
List getarray = new ArrayList();
getarray.add(sc);
session.setAttribute("sp",getarray);
response.sendRedirect("b.jsp");在b.jsp里面这样写 List list=(List)session.getAttribute("sp");
shoppingcart sc=(shoppingcart )list.get(0);这样就报
java.lang.ClassCastException
为什么会这样呢?
应该是 List list=(List)session.getAttribute("sp"); 报的,你看一下getAttribute返回的是不是一个Object[],如果是就改成 List list=(List)(session.getAttribute("sp")[0])
shoppingcart sc=(shoppingcart )list.get(0);这个是可以的,没有报exception为什么跳转以后,就不行呢?郁闷
Iterator it = list.iterator();
if(it !=null && it.hasNext())
shoppingcart sc=(shoppingcart )it.next();
System.out.println(list.get(0).getClass.toString());
新的shoppingcart已经不再是旧的shoppingcart,这样你看起来它们的名字是相同的,但是实际上已经不是同一个类。所以会报错。其实你重新启动一次Tomcat之类的Web服务器也是可以的,不过这样的代码实在是不好,JSP的逻辑应该尽可能的简单。