【发布时间】:2017-02-06 15:21:48
【问题描述】:
我想访问资源中的特定属性。
主要资源有两个孩子,应用在第一个。我想从第二个孩子那里得到一个财产。
我能找到类似的东西吗:
${resource.parent.child[1].valueMap.title}
谢谢!
【问题讨论】:
我想访问资源中的特定属性。
主要资源有两个孩子,应用在第一个。我想从第二个孩子那里得到一个财产。
我能找到类似的东西吗:
${resource.parent.child[1].valueMap.title}
谢谢!
【问题讨论】:
首先 - 请注意可能无法保证子级的顺序,除非您使用的是 sling:OrderedFolder 或其他一些有序类型。所以试图得到“第二个”孩子可能甚至没有意义。
话虽如此,可能有一些我没有想到的有效用例需要获得第二个孩子——据我所知,您需要创建一个 Java 或 JS 对象并使用 @ 987654321@。
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>
【讨论】:
这是我用于将内容转换为 JSON 的另一个示例。 JSON的内容作为解析的Objects,每个Object都有Attributes。
<div data-sly-use.jsonHelper="${'com.service.helpers.JSONHelper'
@json=model.getRawJson}">
${jsonHelper.parsedJSON[item].commodityList[subitem].name}
...
</div>
【讨论】: