java - Sling 资源与节点

标签 java sling

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

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 中获取它们,并且缺少的属性不会引发异常。

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

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

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

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

关于java - Sling 资源与节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16570709/

相关文章:

aem - Apache Sling - 在 Windows 中启动时的 OSGI 框架异常

java - 更新 SOAP 1.2 错误 "code value"和 "locale"?

java - 为什么我的递归函数不能递归遍历堆栈中的所有数据?

java - TextView 数字以波斯字体显示为英文

osgi - 如何使用 AEM Form 下拉列表中的项目加载路径

java - Apache Sling 资源解析器

java - 无法理解四舍五入如何处理十进制数字 (Java)

java - 网络字节顺序-电报

java - @Inject 和@ValueMapValue 注解的区别

aem - 运行时异常 : Unable to scan input when loading a page in AEM