当前位置: 代码迷 >> Java Web开发 >> 关于JavaBean和application的有关问题
  详细解决方案

关于JavaBean和application的有关问题

热度:76   发布时间:2016-04-17 11:11:49.0
关于JavaBean和application的问题
服务器是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不要使用动态名称
  相关解决方案