Aem 在adobe cq5中检索节点的最佳方式是什么?

Aem 在adobe cq5中检索节点的最佳方式是什么?,aem,sling,Aem,Sling,在AdobeCQ5中检索节点的不同方法有哪些,哪些是首选方法 我知道三种方法,一种是通过会话、请求,另一种是通过resourceResolver。 这些是 Node rootNode = session.getNode(path); by request Node currentNode = request.getResource().adaptTo(Node.class); by resourceResolver String resourcePath = "path/to/r

在AdobeCQ5中检索节点的不同方法有哪些,哪些是首选方法

我知道三种方法,一种是通过会话、请求,另一种是通过resourceResolver。 这些是

Node rootNode = session.getNode(path);  
by request
Node currentNode = request.getResource().adaptTo(Node.class);

by resourceResolver

    String resourcePath = "path/to/resource";
    Node.node = resourceResolver.getResource(resourcePath).adaptTo(Node.class);

其中哪一个是最好的检索方式,为什么

首先,不鼓励问这样的问题,因为它会触发基于质疑的答案。尽管如此,我还是尽量客观。我认为这取决于用例,例如,您希望在代码中的何处获取节点:

  • 如果您已经在servlet中,
    request.getResource().adapto(Node.class)
    可能是最 直截了当的方法
  • 如果您已经有一个jcr
    会话
    ,那么使用
    getNode(路径)
    method
  • 如果您已经有
    resourcesolver
    getResource(path)
    resolve(path)
    也可以
我个人更喜欢Sling API而不是JCR,因此我通常使用资源,因此我主要使用
ResourceResolver
或其适配器:
PageManager
TagManager
,等等


我甚至认为,在内部,它最终都是会话。getNode(path)作为
资源解析程序
依赖于会话(您可以对其进行调整)和
请求。getResource()
可能使用
解析(path)
方法。

首先,不鼓励问这样的问题,因为它触发了基于质疑的答案。尽管如此,我还是尽量客观。我认为这取决于用例,例如,您希望在代码中的何处获取节点:

  • 如果您已经在servlet中,
    request.getResource().adapto(Node.class)
    可能是最 直截了当的方法
  • 如果您已经有一个jcr
    会话
    ,那么使用
    getNode(路径)
    method
  • 如果您已经有
    resourcesolver
    getResource(path)
    resolve(path)
    也可以
我个人更喜欢Sling API而不是JCR,因此我通常使用资源,因此我主要使用
ResourceResolver
或其适配器:
PageManager
TagManager
,等等

我甚至认为,在内部,所有这些都以
会话结束。getNode(path)
作为
资源解析程序
依赖于
会话
(您可以对其进行调整),并且
请求。getResource()
可能使用
解析(path)
方法。

没有“最佳方法”。如果您已经有一个节点对象,那么如果您正在尝试获取,例如。。。所有的子项都是listChildren()。实际上,最好的方法是用例

真正的问题是为什么需要一个特定的节点。除非您在JCR中创建数据,否则通常不需要节点接口。99%的时间系统为您处理节点创建,因此您正在读取数据,在这种情况下,resource.Adapto(ValueMap.class)可能是您最好的选择

如果你能提供更多的细节,说明你为什么会关心这个问题,我可以进一步帮助你。

没有“最佳方法”。如果您已经有一个节点对象,那么如果您正在尝试获取,例如。。。所有的子项都是listChildren()。实际上,最好的方法是用例

真正的问题是为什么需要一个特定的节点。除非您在JCR中创建数据,否则通常不需要节点接口。99%的时间系统为您处理节点创建,因此您正在读取数据,在这种情况下,resource.Adapto(ValueMap.class)可能是您最好的选择


如果您添加更多关于为什么关注此问题和上下文的详细信息,我可以进一步帮助您。

什么是用例?什么是用例?