如何在cq5中检查页面是否包含特定资源?

时间:2015-06-02 06:33:58

标签: cq5 aem sling

我想检查我的网页是否包含特定资源。如果资源只在页面上出现一次,则可以使用

进行检查
page.getContentResource("yourResource");

如果为null则表示资源不存在。但问题是我的页面上有多个资源。比如yourResource_1,yourResource_2,yourResource_3 ......如果我删除了yourResource,但我仍然拥有yourResource_1,yourResource_2,yourResource_3。然后我也返回null,因为它只检查“yourResource”

任何建议?

3 个答案:

答案 0 :(得分:1)

如果您不知道网页jcr:content节点的所有潜在子资源的名称,可以使用下面的代码段来检查jcr:content节点是否包含任何孩子。

import javax.jcr.Node

boolean hasChildren = page.getContentResource().adaptTo(Node.class).hasNodes();

答案 1 :(得分:0)

小注释,getContentResource只返回jcr:content的直接子节点,尽管你可以使用像trunc这样的相对路径。 我认为唯一的方法是递归深入挖掘资源并检查resourceType。这个问题(未经测试):

trunc

答案 2 :(得分:0)

你可以适应To()ValueMap并检查地图是否有任何属性,即isEmpty():