【问题标题】:Failure to Loop Through Map in JSP [duplicate]在 JSP 中循环映射失败 [重复]
【发布时间】:2013-01-15 21:39:00
【问题描述】:

可能重复:
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,但没有运气。

附言我希望我可以安装和使用 JSTL,但这不是我的决定。

【问题讨论】:

  • image.getImageTagAttributes() 返回了什么? Map 具有键/值对机制。您需要使用EntrySet 来迭代Map
  • 按照以下解决方案中的建议使用迭代器:stackoverflow.com/questions/672916/…
  • 你是怎么错过你找到的答案中的entrySet()方法的?
  • @BalusC,我认为countries.entrySet() 是所讨论的示例所独有的,而不是我所特有的。我在 Java 方面的知识充其量只是新手。

标签: java jsp map iteration aem


【解决方案1】:

不确定你从哪里得到 Image 类,但如果 image.getImageTagAttributes() 返回 Map&lt;String, String&gt; 那么也许试试这种方式

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
}

【讨论】:

    【解决方案2】:

    你不能为每个循环迭代一个 Map。

    获取地图对象键集,然后对其进行迭代。

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

    【讨论】:

      【解决方案3】:

      因为这不是迭代 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&lt;String,String&gt;

      【讨论】:

        猜你喜欢
        • 2018-04-08
        • 2012-10-16
        • 2023-02-17
        • 2011-08-05
        • 2018-03-03
        • 1970-01-01
        • 1970-01-01
        • 2011-11-17
        • 2016-02-06
        相关资源
        最近更新 更多