【问题标题】:Sling - AEM sling:members from a new collectionSling - AEM sling:来自新系列的成员
【发布时间】:2015-09-08 22:46:41
【问题描述】:

我最近进入了 AEM 和 sling (api) 的世界。我要做的是编写 Java 代码来获取 sling:members 及其属性 sling:resources 用于我在触摸中创建的新集合。我可以使用 ResourceResolver.resolve(path) 引用集合属性。 sling:members 显示为 { ....}。我必须做一个单独的 ResourceResolver 吗?

String path="/content/dam/collections/m/fafdsfdaf/my_collection";
Resource resourceMember = resourceResolver.resolve(path+"/sling:members");
ValueMap metaData = resourceMember.adaptTo(ValueMap.class);
String[] slingResources = metaData.get("sling:resources", new String[0]);

我完全偏离标准了吗?任何帮助将不胜感激。

【问题讨论】:

    标签: java aem sling


    【解决方案1】:

    获取集合成员的正确方法是使用 ResourceCollection API。为此,您获取指向集合的资源,然后将其调整为ResourceCollection。从那里你调用getResources(),它会返回一个成员的迭代器。

    Resource r = resourceResolver.getResource("/content/dam/collections/m/fafdsfdaf/my_collection");
    ResourceCollection collection = r.adaptTo(ResourceCollection.class);
    Iterator<Resource> it = collection.getResources();
    while(it.hasNext()) {
       Resource p = it.next();
        %><%= p.getPath() %><%
    } 
    

    【讨论】:

      【解决方案2】:

      事实证明这是正确的方法并且有效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-16
        • 1970-01-01
        • 2018-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-21
        • 2016-11-14
        相关资源
        最近更新 更多