日期:2014-05-17  浏览次数:20797 次

关于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不要使用动态名称