Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Aem 通过访问特定资源中的属性_Aem_Sling_Sightly - Fatal编程技术网

Aem 通过访问特定资源中的属性

Aem 通过访问特定资源中的属性,aem,sling,sightly,Aem,Sling,Sightly,我想访问资源中的特定属性 主要资源有两个子项,应用程序位于第一个子项中。我想从第二个孩子那里得到一笔财产 我能找到类似于: ${resource.parent.child[1].valueMap.title} 谢谢 开始-请注意,可能无法保证子项的顺序,除非您使用的是sling:OrderedFolder或其他某种订购类型。因此,试图得到“第二个”孩子甚至可能没有意义 话虽如此,可能有一些我没有想到的有效用例需要第二个孩子——据我所知,您将需要创建一个Java或JS对象并利用 Java对象

我想访问资源中的特定属性

主要资源有两个子项,应用程序位于第一个子项中。我想从第二个孩子那里得到一笔财产

我能找到类似于:

 ${resource.parent.child[1].valueMap.title} 

谢谢

开始-请注意,可能无法保证子项的顺序,除非您使用的是sling:OrderedFolder或其他某种订购类型。因此,试图得到“第二个”孩子甚至可能没有意义

话虽如此,可能有一些我没有想到的有效用例需要第二个孩子——据我所知,您将需要创建一个Java或JS对象并利用

Java对象的简单示例
打包apps.your_app.components.yourComponent;
导入com.adobe.cq.sightly.WCMUsePojo;
导入org.apache.sling.api.resource.resource;
导入java.util.Iterator;
公共类模型扩展了WCMUsePojo{
@凌驾
public void activate()引发异常{
//如果需要,做一些事情
}
公共资源getSecondSibling(){
资源父级=getResource().getParent();
资源secondSib=null;
迭代器children=parent.listChildren();
//找到第二个孩子
对于(int i=0;i<2;i++)
secondSib=children.next();
返回第二个SIB;
}
}
将其应用于以下领域:
${model.secondSibling.propertyName}

下面是我将内容转换为JSON时使用的另一个示例。JSON的内容是经过解析的对象,每个对象都有属性

<div data-sly-use.jsonHelper="${'com.service.helpers.JSONHelper'
  @json=model.getRawJson}">

  ${jsonHelper.parsedJSON[item].commodityList[subitem].name}
  ...
</div>

${jsonHelper.parsedJSON[item].commodityList[subitem].name}
...

正如本回答中所述,您确实不应该依赖商品订单。相反,您应该按名称引用资源。我认为OP指的是另一个兄弟,而不是第二个兄弟。正如@ub1k所说,可以修改逻辑以根据名称否定原始资源。我不确定这是如何解决问题的。我试图展示一个示例,以便在Ayoub要求的情况下使用,在涉及多个对象或嵌套对象时检索值。啊,我明白了!这是有道理的。唯一的问题是,这适用于嵌套对象,但不适用于资源子对象,这是海报遇到的问题。
<div data-sly-use.jsonHelper="${'com.service.helpers.JSONHelper'
  @json=model.getRawJson}">

  ${jsonHelper.parsedJSON[item].commodityList[subitem].name}
  ...
</div>