如何查找具有特定名称的父节点?


def query = SQLQuery() <- my sql query
def result = query.execute()
result.nodes.each{node -> 
node.setProperty(JcrConstants.JCR_TITLE, "new3")

我使用groovy console找到了具有特定资源类型的所有组件,我需要用该组件所在页面的标题替换它们的标题。我需要使用名为jcr:content

的父节点代替"new3"我可以使用node.getParent().getParent().getParent().getProperty("jcr:title"),但是页面可以有不同的结构。那么,如何通过名称查找父节点呢?

查找包含资源的Page的惯用方法是通过PageManager#getContainingPage

一旦你有一个Page对象,你可以阅读相关的标题。请记住,有几个选项可供选择:

  • title
  • pageTitle
  • navigationTitle

它们可以映射到Page属性中的不同对话框字段,并且某些组件可能以不同的方式使用它们,有时在没有值的情况下使用从一个到另一个的回退。对于不同的页面级组件也是如此,这些组件可能允许也可能不允许作者设置给定的属性。

如果您使用AEM核心组件,那么确切的用法应该非常清楚,但是自定义组件可能需要一些调查,特别是如果您正在处理长期存在的代码库。

如果没有合适的标题,您可以使用该页的name,它应该与存储库中的节点名称匹配。

PageManager本身应该作为Groovy控制台中pageManager下的默认绑定可用。或者,它可以从ResourceResolver改编,例如,如果你需要一些自定义权限。

最新更新