我想检查我的页面是否包含特定资源。如果资源在页面上只有一次,那么可以使用
page.getContentResource("yourResource");
如果它为空意味着资源不存在。但问题是我的page.like上有多个资源yourResource_1,yourResource_2,yourResource_3…如果我删除了yourResource,但我仍然有yourResource_1,yourResource_2,yourResource_3。然后我也返回null,因为它只检查"yourResource"
有什么建议吗?
如果您不知道页面的jcr: content
节点的所有潜在子资源的名称,您可以使用下面的片段检查jcr:content
节点是否有任何子节点。
import javax.jcr.Node
boolean hasChildren = page.getContentResource().adaptTo(Node.class).hasNodes();
小提示,getContentResource只返回jcr: content的直接子项,尽管您可以使用par/yourResource
之类的相对路径。我认为唯一的方法是递归钻取资源并检查资源类型。这一行的东西(未经测试):
private boolean checkType(Resource res) {
if (res.isResourceType("yourResource") {
return true;
}
boolean hasType = false;
Iterator<Resource> children = res.listChildren();
while (children.hasNext()) {
hasType |= checkType(children.next());
}
return hasType;
}
您可以适配To()ValueMap并检查地图是否具有任何属性,即isCounty():