吊索资源与节点

我无法理解为什么在吊索中使用资源而不是节点。 所以说我有一些简单的访问节点,如下所示:

NodeIterator headerNode = currentNode.getNodes(); //loop through and do something with the nodes. 

你将如何在资源而不是节点上工作。 我听说你通常应该在吊索而不是节点的资源上工作。 但为什么? 我真的不明白这会带来什么好处。 我想我也很难掌握哪些资源。 我知道有文档,但我找不到任何关于如何使用它们的代码示例。

要查看的主要文档是http://sling.apache.org/documentation/the-sling-engine/resources.html ,它解释了资源概念以及如何使用它们。

API与JCR节点API略有不同,但使用类似的概念。 使用Resources肯定更简单的一件事是访问属性值,因为您在ValueMap中获取属性值,并且缺少属性不会抛出exception。

以上文档应该解释主要模式,简而言之是:

  • 您从Sling Request获取资源,或使用ResourceResolver服务
  • 可以将资源调整为ValueMap以访问其属性
  • 如果需要切换到JCR API,可以将资源调整为节点
  • Resource.listChildren(…)类似于Node.getNodes()
  • Resource.getResourceResolver()提供ResourceResolver,通过搜索或路径提供对其他资源的访问。

资源存在以抽象内容存储,以便在Sling中使用除JCR之外的其他后端,并统一Sling对其内部使用的数据和内容的视图。

对于应用程序级编程,我认为JCR API非常好,我不会仅仅为了它而使用Resource。 但在某些情况下,Resource API会使事情变得更简单。