服务器是tomcat,我自己定义了一个Bean,想把几个Bean的对象,存储到application中,让application来暂时充当数据库的角色,往application中存储对象是没有问题,用setAttribute()就可以搞定,问题是我想依次取出application中存储的对象,并且用该对象的get方法,得到对象中的属性,这一步,我用的是下面这段代码:
- HTML code
Enumeration<String> enumeration=application.getAttributeNames(); boolean isExit=false;String rename="";String repwd="";while(enumeration.hasMoreElements()){ String attrName=enumeration.nextElement(); User user=(User)application.getAttribute(attrName);//这个User就是我自己定义的Bean,也是这一行报错 rename=user.getUserName(); repwd=user.getPassword(); if(name.equals(rename) && pwd.equals(repwd)) { isExit=true; return; }}
然后问题就来了:
它总是报这样的错:java.lang.ClassCastException: java.lang.String cannot be cast to UserBean.User,org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:567),位置是上面做注释那一行。getAttribute()不应该得到的是Object类型的对象吗?怎么它说的是String?很不理解,望高手解答……
------解决方案--------------------
我怀疑setAttribute那边已经出错了
你就将错纠错,打印出来,看个究竟
User user=(User)application.getAttribute(attrName);//这个User就是我自己定义的Bean,也是这一行报错
改为
String tempString=(String)application.getAttribute(attrName);//
System.out.println(tempString);
------解决方案--------------------
你的错误是使用动态名的缘故造成的
建议key不要使用动态名称