Aem 如何检查页面是否包含cq5中的特定资源?
我想检查我的页面是否包含特定的资源。如果资源在页面上只有一次,那么可以使用Aem 如何检查页面是否包含cq5中的特定资源?,aem,sling,Aem,Sling,我想检查我的页面是否包含特定的资源。如果资源在页面上只有一次,那么可以使用 page.getContentResource("yourResource"); 如果为空,则表示资源不存在。但问题是我的页面上有多个资源。比如yourResource\u 1、yourResource\u 2、yourResource\u 3。。。如果我删除了yourResource,但仍然有yourResource\u 1、yourResource\u 2、yourResource\u 3。然后我还返回null,因
page.getContentResource("yourResource");
如果为空,则表示资源不存在。但问题是我的页面上有多个资源。比如yourResource\u 1、yourResource\u 2、yourResource\u 3。。。如果我删除了yourResource,但仍然有yourResource\u 1、yourResource\u 2、yourResource\u 3。然后我还返回null,因为它只检查“yoursource”
有什么建议吗?小注释,getContentResource只返回jcr:content的直接子级,尽管您可以使用相对路径,如
par/yoursource
。
我认为实现这一点的唯一方法是递归深入资源并检查resourceType。与此相关的内容(未经测试):
private boolean checkType(资源res){
如果(res.isResourceType(“您的资源”){
返回true;
}
布尔hasType=false;
迭代器children=res.listChildren();
while(children.hasNext()){
hasType |=checkType(children.next());
}
返回类型;
}
您可以adapto()并检查映射是否有任何属性,即isEmpty():如果您不知道页面的jcr:content
节点的所有潜在子资源的名称,您可以使用下面的代码片段检查jcr:content
节点是否有任何子资源
import javax.jcr.Node
boolean hasChildren = page.getContentResource().adaptTo(Node.class).hasNodes();
好的,我来试试。你知道这个吗。
import javax.jcr.Node
boolean hasChildren = page.getContentResource().adaptTo(Node.class).hasNodes();