我想要使用QueryBuilder api在AEM中的特定路径下获取属性的所有值。 此属性可以包含单个或多个。 任何帮助将不胜感激!!
答案 0 :(得分:4)
可以帮助您的示例。在下面,因为它只是用简单的JSP scriptlet编写的插图
<%
Iterator<Resource> iter = resourceResolver.findResources("/jcr:root/content/geometrixx-outdoors//element(*, nt:unstructured)[(@imageRotate = '0' or @imageRotate = '1')]","xpath");
while (iter.hasNext()) {
Resource child = iter.next();
out.println("</br>"+child.getPath());
Node node = child.adaptTo(Node.class);
Property nProp = node.getProperty("imageRotate");
if(nProp.isMultiple()) // This condition checks for properties whose type is String[](String array)
{
Value[] values = nProp.getValues();
out.println(" :: This is a multi valued property ::");
for (Value v : values) {
out.println("</br>"+"Property Name = "+nProp.getName()+" ; Property Value= "+v.getString());
}
}
else if(!nProp.getDefinition().isMultiple()){
out.println("</br>"+"Property Name = "+nProp.getName()+" ; Property Value= "+nProp.getString());
}
}
%>
在这里,我使用了Iterator<Resource> iter = resourceResolver.findResources(query,"xpath");
,它可以为您提供与imageRotate
路径下的/content/geometrixx-outdoors/
属性匹配的查询结果,该路径包含单个和多值的组合,如下面的屏幕截图所示。< / p>
答案 1 :(得分:1)
使用查询构建器api无法直接获取属性。我建议你创建一个servlet资源,它需要path
和property
名称。
通过QueryBuilder
使用给定路径获取jcr节点。然后,您需要遍历结果以检查节点的属性。一旦有了节点,就可以访问多个属性值。