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();