我需要检查资源对象是否对以下“资源”对象有效。例如,如果我在这种情况下传递任何类似getResource("some path which is not available in cq")
的网址,我需要限制它
Resource resource= resourceResolver.getResource(/content/rc/test/jcr:content");
Node node = resource.adaptTo(Node.class);
String parentPagePath= node.getProperty("someproperty").getValue().getString();
有什么办法吗?
答案 0 :(得分:8)
如果您使用getResource
,则无效检查就足够了。如果您使用resolve
,则必须使用!ResourceUtil.isNonExistingResource(resource)
。
在节点级别,您可以使用hasProperty
检查是否存在属性。
答案 1 :(得分:3)
正如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。
因此,我建议您处理ValueMap(Sling API)来检索/设置Node的属性,而不是处理Node(JCR API)
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);
}