从会话中获取会话变量

时间:2011-05-04 15:12:41

标签: java enumeration

编译以下代码时,我收到以下错误

Enumeration e = bean.getSession().getAttributeNames(); 
        while (e.hasMoreElements()) { 
        String name = (String)e.nextElement(); 
        String value = session.getAttribute(name).toString(); 
        System.out.println(name + " = " + value); 

Error:
found   : java.util.Iterator
required: java.util.Enumeration
        Enumeration e = bean.getSession().getAttributeNames(); 

4 个答案:

答案 0 :(得分:3)

你不应该使用枚举,它应该是迭代器。然后使用Iterator的方法,如hasNext()来检查是否有下一个项目和next()来获取下一个项目。希望它有所帮助:)

答案 1 :(得分:3)

如何使用for循环?

for (String name : bean.getSession().getAttributeNames() ) {
    String value = session.getAttribute(name).toString();
    System.out.println( name + " = " + value );
}

答案 2 :(得分:0)

看起来您实际上正在使用返回getAttributeNames()实例的java.util.Iterator方法。所以作为一个快速解决方案,这应该工作:

Iterator it = bean.getSession().getAttributeNames(); 
while (it.hasNext()) { 
    String name = (String)it.next(); 
    String value = session.getAttribute(name).toString(); 
    System.out.println(name + " = " + value);

如果我们知道bean变量的实际类型和/或bean.getSession()的返回值,则可以提供更多帮助/信息。

答案 3 :(得分:0)

我认为问题出在第一行。这对我有用:

<%
    Enumeration attrs = session.getAttributeNames(); //you will need to include java.util.Enumeration
    while(attrs.hasMoreElements()){ //for each item in the session array
        String id = attrs.nextElement().toString(); //the name of the attribute
        out.print("'" + id + "': '" + session.getAttribute(id) + "'"); //print out the key/value pair
    }
%>

正如其他人指出的那样,你应该使用Iterator