【问题标题】:how do I get key/value in sightly from java use class hashmap如何从 java 使用类 hashmap 中一目了然地获取键/值
【发布时间】:2014-09-30 15:10:01
【问题描述】:

我有一个基本的 java 使用类对象,它扩展了 WCMUSE 和一个简单的 hashmap 方法 - 在代码中 - 我有类似的东西

${项目}

${item.key}

${item.value}

不起作用 - 我如何在代码中返回键/值对

【问题讨论】:

    标签: aem sightly


    【解决方案1】:

    Sightly Intro Part 3 有一个示例,AEM Docs Sightly Page 记录了 ${item} 和 ${itemList} 作为变量的使用。该页面还提供了以下访问动态值的示例:

    <dl data-sly-list.child="${myObj}">
    <dt>key: ${child}</dt>
    <dd>value: ${myObj[child]}</dd>
    </dl>
    

    这是一个简单的 HashMap 示例。

    带有 Sightly 的 HTML:

    <div data-sly-use.myClass="com.test.WcmUseSample" data-sly-unwrap>
        <ul data-sly-list.keyName="${myClass.getMyHashMap}">
            <li>KEY: ${keyName}, VALUE: ${myClass.getMyHashMap[keyName]}</li>
        </ul>
    </div>
    

    Java:

    package com.test;
    
    import java.util.HashMap;
    import java.util.Map;
    import com.adobe.cq.sightly.WCMUse;
    
    public class WcmUseSample extends WCMUse {
    private Map<String, String> myHashMap;
    
        public void activate() throws Exception {
            myHashMap = new HashMap<String, String>();
            for (int i = 0; i < 10; ++i) { 
                myHashMap.put(""+i, "Hello "+i);
            }
        }
        public Map<String,String> getMyHashMap() {
            return myHashMap;
        }
    }
    

    【讨论】:

    • data-sly-use.myClass 周围的 div 不是必需的。应尽可能避免创建使用 data-sly-unwrap 再次删除的元素,以使模板标记与生成的标记尽可能接近。因此应该将 data-sly-use.myClass 放在 UL 元素上。
    • @JohnKepler 难道这只适用于没有 String 键的 HashMaps? (例如 Map&lt;Tag, List&lt;Tag&gt;&gt; 触发 SlingException: Invalid property name
    【解决方案2】:

    您还可以尝试以下 (AEM 6.4):

    注意data-sly-test.hashMap 用于空检查。

    <div data-sly-use.pageController="com.corp.wcms.core.pages.anypage.PageController"
    
      <div data-sly-test.hashMap="${pageController.myHashMap}" data-sly-unwrap>
         <ul data-sly-list.keyName="${hashMap}">
           <li>KEY: ${keyName}, VALUE: ${hashMap[keyName]}</li>
         </ul>
      </div>
    
    </div>
    

    【讨论】:

      猜你喜欢
      • 2010-11-25
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 2013-04-21
      • 2014-09-21
      • 2017-09-23
      • 1970-01-01
      相关资源
      最近更新 更多