【问题标题】:CQ5 - Sling accessing nodesCQ5 - 吊索访问节点
【发布时间】:2013-04-04 22:35:34
【问题描述】:

我完全是新手,所以我提前道歉。我已经设置了 CQ5 的实例 而且我不知道如何访问特定节点。所以说我有一个组件 小路: /project/components/content/leftsidebar 但我想在这里访问另一个节点的属性: /content/dam/campaign

我知道 properties.get 方法有效,但前提是您在该节点内 properties.get("title", "placeholder");

我是一个完整的新手,所以请发布代码示例是可能的。

谢谢!

【问题讨论】:

    标签: java aem sling


    【解决方案1】:

    您需要使用ResourceResolver 来获取您正在寻找的资源。从那里,您可以将其调整为 ValueMap 并读取其属性:

    ResourceResolver resourceResolver = slingRequest.getResourceResolver();
    Resource campaignResource = resourceResolver.getResource("/content/dam/campaign");
    ValueMap campaignProperties = campaignResource.adaptTo(ValueMap.class);
    String title = campaignProperties.get("title", "placeholder");
    

    您可以在Apache Sling website 上阅读有关访问属性的更多信息。请记住,CQ5 是底层的 Sling,因此它是一个很好的资源,而且您仍然比直接访问 JCR 还要抽象。

    【讨论】:

    • 感谢您回复@anotherdave。知道为什么我会收到此错误:ResourceResolver 无法解析为类型 我是否需要包含一个额外的包?抱歉,我完全是新手。
    • 你需要在你的脚本中导入 org.apache.sling.api.resource.ResourceResolver 接口。
    • 感谢@bertrand 为什么我会收到此错误重复的局部变量resolver
    • 嘿@anotherdave 碰巧知道为什么我会得到一个重复的局部变量resourceResolver 谢谢!
    • @Demon Young。我想说你很可能在你的脚本或你正在包含的脚本中引用了“cq:defineObjects”或“sling:defineObjects”。这些已经公开了一个“resourceResolver”变量,所以你不需要声明它。更多信息在这里 - dev.day.com/docs/en/cq/current/howto/…
    猜你喜欢
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 2014-06-03
    • 1970-01-01
    相关资源
    最近更新 更多