Aem CQ-检查资源对象是否有效

Aem CQ-检查资源对象是否有效,aem,jcr,sling,Aem,Jcr,Sling,我需要检查资源对象对于下面的“资源”对象是否有效。例如,如果我传递任何url,比如getResource(“某些路径在cq中不可用”),在这种情况下,我需要限制它 Resource resource= resourceResolver.getResource(/content/rc/test/jcr:content"); Node node = resource.adaptTo(Node.class); String parentPagePath= node.getProperty("somep

我需要检查资源对象对于下面的“资源”对象是否有效。例如,如果我传递任何url,比如
getResource(“某些路径在cq中不可用”)
,在这种情况下,我需要限制它

Resource resource= resourceResolver.getResource(/content/rc/test/jcr:content");
Node node = resource.adaptTo(Node.class);
String parentPagePath= node.getProperty("someproperty").getValue().getString();

有什么办法吗?

如果您使用的是
getResource
空检查就足够了。如果使用
解析
,则必须使用
!ResourceUtil.isnoexistingResource(资源)

在节点级别,您可以使用
hasProperty

检查属性的存在,正如Thomas所说,
ResourceResolver.getResource()
如果作为参数提供的路径不存在,则返回
null
。对资源进行空检查可以解决您的问题

Resource resource= resourceResolver.getResource("some path which is not available in cq");
if(resource != null){
Node node = resource.adaptTo(Node.class);
String parentPagePath= node.getProperty("someproperty").getValue().getString();
}
只是一个旁注: 除非有令人信服的理由,否则最好使用包装器,而不是使用较低级别的API

因此,我建议您处理(SlingAPI)来检索/设置节点的属性,而不是处理(JCRAPI)

参考:

您能接受答案并帮我结束这个问题吗?当您使用Sightly时,答案在这里:
Resource resource= resourceResolver.getResource("some path which is not available in cq");
    if(resource != null){
    ValueMap mapWithAllTheValues = resource.adaptTo(ValueMap.class);
    String parentPagePath= mapWithAllTheValues.get("someproperty", String.class);
    }