无法在JSP中循环遍历映射

时间:2013-01-31 17:31:15

标签: java jsp map iteration cq5

  

可能重复:
  How do I iterate over each Entry in a Map?

我遵循此解决方案无效:https://stackoverflow.com/a/1835742/666468

我正在尝试输出这张地图:

//protected Map<String,String> getImageTagAttributes()
Image image = new Image(resource);
for (Map<String, String> foo : image.getImageTagAttributes()) {
        String key = foo.getKey();
        String value = foo.getValue();

        //output here
    }

但是我收到了这个错误:只能迭代数组或java.lang.Iterable的实例

我也导入了 java.util.Iterator ,但没有运气。

P.S。我希望我可以安装和使用JSTL,但这不是我的电话。

3 个答案:

答案 0 :(得分:2)

不知道你从哪里获得了Image课程,但如果image.getImageTagAttributes()返回Map<String, String>,那么可能会这样尝试

Image image = new Image(resource);
Map<String, String> map = image.getImageTagAttributes();
for (Map.Entry<String,String> foo : map.entrySet()) {
    String key = foo.getKey();
    String value = foo.getValue();

    //output here
}

答案 1 :(得分:0)

您无法为每个循环迭代Map。

获取地图对象键集,然后迭代它。

然后在for循环中尝试从地图中检索每个键的值。

答案 2 :(得分:0)

因为这不是迭代Map的正确方法:

    Image image = new Image(resource);
    Map<String, String> foo =  image.getImageTagAttributes();
    Set<String> key = foo.keyset(); 
     for ( k : keys ) {
           String value = foo.get(k);
        //output here
    }

或者你可以这样沟通:

    Image image = new Image(resource);
    Map<String, String> foo =  image.getImageTagAttributes();
    Set<Map.Entry<String,String>> entries = foo.entrySet();

    for(Map.Entry<String, String> e : entries){
       String key  = e.getKey();
       String value = e.getValue();
        //output
    }

在我的回答中,我认为image.getImageTagAttributes();会返回Map<String,String>