5

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

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

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

4

1 回答 1

10

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

该 API 与 JCR 节点 API 有些不同,但使用了类似的概念。使用 Resources 绝对更简单的一件事是访问属性值,例如,当您在 ValueMap 中获取它们时,缺少的属性不会引发异常。

上面的文档应该解释主要模式,简而言之,它们是:

  • 您从 Sling Request 或使用 ResourceResolver 服务获取资源
  • Resource 可以适应 ValueMap 以访问其属性
  • 如果需要切换到 JCR API,可以将 Resource 适配到 Node
  • Resource.listChildren(...) 类似于 Node.getNodes()
  • Resource.getResourceResolver() 提供了一个 ResourceResolver,它可以通过搜索或路径访问其他资源。

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

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

于 2013-05-16T08:34:30.603 回答