吊索资源与节点

Del*_*ung 4 java sling

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

NodeIterator headerNode = currentNode.getNodes();
//loop through and do something with the nodes.
Run Code Online (Sandbox Code Playgroud)

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

Ber*_*taz 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会使事情变得更简单.