Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 吊索资源与节点_Java_Sling - Fatal编程技术网

Java 吊索资源与节点

Java 吊索资源与节点,java,sling,Java,Sling,我很难理解为什么在sling中使用资源而不是节点。假设我有一些访问节点的简单方法,如下所示: NodeIterator headerNode = currentNode.getNodes(); //loop through and do something with the nodes. 如何在资源而不是节点中工作。我听说您通常应该在资源中工作,而不是在节点中。但是为什么呢?我真的不明白这样做有什么好处。我想我也很难理解什么是资源。我知道有一些文档,但我找不到任何关于如何使用它们的代码示例。要

我很难理解为什么在sling中使用资源而不是节点。假设我有一些访问节点的简单方法,如下所示:

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

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

要查看的主要文档解释了资源概念以及如何使用它们

该API与JCR节点API有些不同,但使用了类似的概念。对于资源来说,最简单的一件事就是访问属性值,例如,当您在ValueMap中获取属性值时,丢失的属性不会抛出异常

上述文件应说明主要模式,简言之,这些模式是:

  • 您可以从Sling请求或使用ResourceResolver服务获得资源
  • 资源可以调整为ValueMap以访问其属性
  • 如果需要切换到JCR API,则可以将资源调整为节点
  • Resource.listChildren(…)类似于Node.getNodes()
  • getResourceResolver()提供一个ResourceResolver,通过搜索或路径访问其他资源
该资源的存在是为了抽象内容存储,使在Sling中使用JCR以外的其他后端成为可能,并统一Sling对其内部使用的数据和内容的看法


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

资源是一个更复杂、功能更强大的对象。例如,adapto()方法非常有用。您甚至可以编写自己的适配器!