我想访问资源中的特定属性。
主要资源包括两个孩子和应用程序在第一个。我想从第二个孩子那里得到一处房产。
我能找到类似的东西吗?
${resource.parent.child[1].valueMap.title}
谢谢!
答案 0 :(得分:2)
要开始 - 请注意可能无法保证孩子的顺序,除非您使用的是sling:OrderedFolder或其他一些有序类型。所以试图让“第二个”孩子甚至没有意义。
话虽如此,可能还有一些我认为不需要第二个孩子的有效用例 - 据我所知,你需要创建一个Java或JS对象并使用{ {3}}。
package apps.your_app.components.yourComponent;
import com.adobe.cq.sightly.WCMUsePojo;
import org.apache.sling.api.resource.Resource;
import java.util.Iterator;
public class Model extends WCMUsePojo {
@Override
public void activate() throws Exception {
//do some stuff if needed
}
public Resource getSecondSibling() {
Resource parent = getResource().getParent();
Resource secondSib = null;
Iterator<Resource> children = parent.listChildren();
//find the second child
for (int i = 0; i < 2; i++)
secondSib = children.next();
return secondSib;
}
}
<sly data-sly-use.model="Model">${model.secondSibling.propertyName}</sly>
答案 1 :(得分:-1)
这是我用于将内容转换为JSON的另一个示例。 JSON的内容作为已解析的对象,每个对象都有属性。
<div data-sly-use.jsonHelper="${'com.service.helpers.JSONHelper'
@json=model.getRawJson}">
${jsonHelper.parsedJSON[item].commodityList[subitem].name}
...
</div>