【问题标题】:How can one access a resource via node UUID in Sightly/HTL?如何通过 Sightly/HTL 中的节点 UUID 访问资源?
【发布时间】:2019-06-10 12:16:23
【问题描述】:

As of HTL 1.4,如果您知道资源的路径,则可以使用data-sly-use访问资源,例如:data-sly-use.item="/content/my_nodes/node1"

但是,如果没有资源的路径,只有节点的jcr:uuid(通过使用mix:referenceable自动生成),有没有什么方法可以用类似的HTL语句查找资源?

【问题讨论】:

    标签: sling sightly htl


    【解决方案1】:

    目前还没有这样的便利。但是,HTL 规范并不排除这一点,您应该能够编写自己的 UseProvider 实现。您可以查看ResourceUseProvider 以获得灵感。

    【讨论】:

    • 理论上这是一种选择,但让SlingModel 获取资源路径不是更简单吗?
    • @Jens,最简单的方法是拥有一个通用的 Use POJO,它可以将 UUID 作为参数(表达式属性)并返回相应的资源。但是,这不是 OP 所要求的。此外,如果他们决定实现自己的 UUIDResourceUseProvider,他们可以将其贡献给 Sling,其他人也可以使用它。
    • @Vlad 谢谢。我现在正在编写自己的 UseProvider,它在 Sling 控制台中显示为一个组件,但似乎没有收到解析标识符的请求。在 Sling Console 中是否有任何地方可以查看所有已注册的 Sling Use Providers?
    • 原来这是一个模糊的类加载问题,它允许新的 UseProvider 作为组件启动,但从不调用它的 provide() 方法。
    • @Spinner 在尝试读取相应的 JCR 节点之前,我将首先确保标识符与 UUID 模式匹配。您可以查看github.com/apache/… 以获得灵感。
    猜你喜欢
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-26
    相关资源
    最近更新 更多