Sling 资源与节点

2023-11-23

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

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,它可以通过搜索或路径来访问其他资源。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sling 资源与节点 的相关文章

随机推荐

  • 如何在WPF中绑定逆布尔属性?

    我所拥有的是一个具有IsReadOnly财产 如果这个属性为真 我想设置IsEnabledButton 上的属性 例如 设置为 false 我愿意相信我可以像IsEnabled Binding Path IsReadOnly 但这不适用于
  • NodeJS readdir 并需要相对路径

    假设我有这个目录结构 Project node modules SomeModule bar js config file json foo js foo js require bar bar js fs readdir config re
  • 清单合并失败错误

    我正在将当前项目的大型应用程序迁移到 Android Studio 和 Gradle 中 我目前陷入以下问题 Error 87 9 Execution failed for task App processDebugManifest gt
  • pip:根据包名称选择索引url?

    我创建了一个本地私有包存储库 按照惯例 所有这些包都以识别前缀命名 例如 foo package 这些包可能依赖于 PyPi 上可用的公共包 我们假设 PyPi 中不存在同名包的风险 通过使用 index url和 一起 extra ind
  • Java 代码未正确更新

    这可能看起来很奇怪 我用 Java 编写了代码 在 Eclipse 中 然后 我对代码做了一些修改 现在 我尝试运行新代码 修改后 但它仍然为我提供之前代码的输出 我在代码中放置了几个调试点 但它跳过了一些调试点 尽管它应该在它们处停止 并
  • 如何将 RFC-1123 日期时间格式化程序转换为本地时间

    我正在获取日期时间Thu 25 Aug 2016 08 59 00 GMT在这个RFC 1123在我的 Android 应用程序中格式化 我需要转换为当地时间 DateTimeFormatter RFC 1123 DATE TIME jav
  • 从 sockaddr * 转换为 sockaddr_in * 增加了所需的对齐方式

    当我使用一些看起来像这样的代码时 编译器会产生此警告 for p res p NULL p p gt ai next void addr std string ipVer IPv0 if p gt ai family AF INET ipV
  • 关于 Rails 中的演示者模式。有更好的方法吗?

    我的模型中有 def presenter presenter ProfilePresenter new self presenter end ProfilePresenter 是一个类 它具有 get link get img url si
  • Mysql - “选择类似”不使用索引

    我一直在研究MySQL 5 5 24 WinXP 上的索引 但我找不到服务器在运行时不使用一个索引的原因 LIKE用来 例子是这样的 我创建了一个测试表 create table testTable id varchar 50 primar
  • POST 响应的 TIdHTTP 字符编码

    采取以下情况 procedure Test var Response String begin Response IdHttp Post MyUrL AStream DoSomethingWith Response end 现在网络服务器以
  • 线程池中的活动线程数

    当我编写下面的代码时 为什么我得到的可用线程号是 1022 1020 因为我正在使用线程池 所以我必须获得最多 25 个线程 我猜输出线程数是系统上的可用线程 我需要在 win 表单应用程序中获取线程池中的可用线程号 private voi
  • 将特殊字符转换为 HTML 字符代码

    我正在为客户开发 CMS 他需要编辑内容并使用特殊字符 例如 and 但是 我不希望他必须输入字符代码 例如 reg 有谁知道使用 PHP 自动转换这些字符的好方法吗 您可以使用 htmlentities 来做到这一点 php r echo
  • 将 Angular 应用程序部署在与根文件夹不同的文件夹中

    刚接触 Angular 如果部署在应用程序工作正常nginx var www mydomain com html 但我想将其部署在 var www mydomain com html myapp文件夹 我设置nginx available
  • 是否有 JavaScript / jQuery DOM 更改侦听器?

    本质上我想让一个脚本在 a 的内容被执行时执行DIV改变 由于脚本是分开的 Chrome 扩展程序中的内容脚本和网页脚本 我需要一种简单观察 DOM 状态变化的方法 我可以设置投票 但这看起来很草率 长期以来 DOM3 突变事件是最佳可用解
  • 如何使用 Xcode 4.2 区分多个目标

    我开发了一个应用程序的精简版 现在我想创建一个付费版本 所以我复制了目标 更改了它的名称 因此更改了 plist 和其他具有该名称的内容 现在我必须在代码中进行区分 我正在使用 Xcode 4 2 我在网上看到我必须创建一个预处理器标志 我
  • 如何在 Flutter 中进行交互式通知 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 I am making a music player app in Flutter and I am not able to find any way to make a wid
  • 使用 jQuery 在 Dom Load 上自动播放 HTML5 视频

    我正在尝试使用 jQuery 在 dom 加载后立即播放视频 这是我的代码 HTML
  • 悬停时旋转或旋转图像

    我想了解如何制作旋转或旋转图像当它悬停时 我想知道如何模拟该功能CSS关于以下代码 img border radius 50 img src http i imgur com 3DWAbmN jpg 您可以使用 CSS3 过渡rotate
  • Sed/Awk - 在模式 x 和 y 之间拉线

    我有一些大型 CSV 文件 我想在其中提取包含模式 x 的 X 行和包含模式 y 的 Y 行之间的所有数据 例如 other data Header data data data Footer other data 我希望能够将页眉 gt
  • Sling 资源与节点

    我无法理解为什么要在吊索中使用资源而不是节点 假设我有一些简单的访问节点 如下所示 NodeIterator headerNode currentNode getNodes loop through and do something wit