吊索资源与节点

时间:2013-05-16 00:34:09

标签: java sling

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

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

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

1 个答案:

答案 0 :(得分:8)

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

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

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

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

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

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