我想要访问资源中的特定属性。
主资源有两个孩子,应用程序在第一个孩子中。我想从第二个孩子那里得到一处房产。
我能找到像这样的东西吗:
${resource.parent.child[1].valueMap.title}
谢谢!
发布于 2016-09-28 20:43:17
首先-请注意,除非您使用:OrderedFolder或其他有序类型,否则不能保证sling子项的顺序为。因此,试图得到“第二个”孩子可能甚至没有意义。
话虽如此,我可能没有考虑到需要获取第二个孩子的一些有效用例--据我所知,您将需要创建一个Java或JS对象并使用Use Api。
简单的Java对象示例
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>
发布于 2016-09-28 21:17:41
下面是我用来将内容转换为JSON的另一个示例。JSON的内容被解析为对象,并且每个对象都有属性。
<div data-sly-use.jsonHelper="${'com.service.helpers.JSONHelper'
@json=model.getRawJson}">
${jsonHelper.parsedJSON[item].commodityList[subitem].name}
...
</div>
https://stackoverflow.com/questions/39751000
复制