【问题标题】:Is it possible to access to a node by GUID?是否可以通过 GUID 访问节点?
【发布时间】:2012-10-07 11:17:03
【问题描述】:

是否可以通过 SLING 查询通过 GUID 访问整个节点?

我知道可以通过 GUID 进行搜索,但这意味着在进行搜索之后,我们必须进行其他查询才能获取节点。

我想得到一个只有一个查询的节点。

【问题讨论】:

  • 如果可以避免的话,我不确定是否要直接使用 GUID,为什么要使用这些而不是节点路径?如果您发布您正在使用的查询,它也可能会有所帮助。
  • 问题是节点路径可能会随着应用程序的发展而改变。 GUID 永远不会改变...
  • 您找到解决方案了吗?此外,激活/复制/发布内容时 GUID 是否相同?我的印象是它是一个实例本地标识符,而不是在存储库之间共享。
  • 不,我没有找到解决方案:/
  • @webnoob - 不明白你的意思。没有一个答案是可以接受的,那我为什么要接受呢?

标签: jackrabbit aem sling


【解决方案1】:

您可以使用 java.jcr.Session.getNodeByIdentifier 以编程方式通过标识符访问节点

http://www.day.com/maven/javax.jcr/javadocs/jcr-2.0/javax/jcr/Session.html#getNodeByIdentifier(java.lang.String)

如果您希望能够通过 HTTP 请求访问它,请创建一个 servlet 来公开此功能。

【讨论】:

    【解决方案2】:

    您可以使用 XPATH 查询(例如

    )通过 UUID 获取节点
    /jcr:root//*[@jcr:uuid='b1e1d3c3-983c-33d6-811c-18d2a8824e03']
    

    node = Session.getNodeByIdentifier(String id);
    

    这里有一个很好的代码示例: Jackrabbit Running Queries against UUID

    你也可以试试

    propertyIterator = node.getReferences();
    

    这似乎依赖于 mix:referenceable,而您的节点可能并非如此。
    Javadoc:http://www.day.com/maven/javax.jcr/javadocs/jcr-2.0/javax/jcr/Node.html#getReferences() 相关问题:Jackrabbit - node.getReferences() not returning anything

    【讨论】:

      猜你喜欢
      • 2011-11-19
      • 1970-01-01
      • 2019-06-11
      • 2018-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多