Jackrabbit如何生成jcr:uuid(在AEM中)?

Jackrabbit如何生成jcr:uuid(在AEM中)?,aem,jcr,jackrabbit,sling,Aem,Jcr,Jackrabbit,Sling,我正在尝试在所有cq:PageContent节点上创建自动生成的GUID属性。这类似于jcr:uuid属性,但将随内容升级/复制/包安装而持久化(而内容项的jcr:uuid在不同环境之间会发生变化) 我试图确定AEM/JCR如何在节点创建时生成JCR:uuid属性。定义属性的CND为: [mix:referenceable] mixin - jcr:uuid (string) mandatory autocreated protected initialize 我尝试在类似的manor

我正在尝试在所有cq:PageContent节点上创建自动生成的GUID属性。这类似于jcr:uuid属性,但将随内容升级/复制/包安装而持久化(而内容项的jcr:uuid在不同环境之间会发生变化)

我试图确定AEM/JCR如何在节点创建时生成JCR:uuid属性。定义属性的CND为:

[mix:referenceable]
  mixin
  - jcr:uuid (string) mandatory autocreated protected initialize
我尝试在类似的manor中定义GUID属性,指定
自动创建的
初始化
属性,但这并没有导致自动生成属性

有人能告诉我jcr:uuid一代的来源吗



作为旁白,我在Adobe社区论坛上问了一个相关的问题:

你没有提到AEM的哪个版本(所以不管你是与Jackrabbit还是Oak打交道),但机制基本相同

在指定默认值时,有一些硬编码的系统属性名称会得到特殊处理(jcr:uuid就是其中之一)。如果指定默认值的属性名称与任何特殊情况都不匹配,它会从属性定义中返回默认值的静态列表(例如,在CND文件中列出)

总之,您似乎无法借助此机制为任意属性指定自己的动态默认值。您需要实现自己的事件侦听器或其他功能


Jackrabbit:参见和的实现


Oak:查看TreeUtil的实现

难道你不能从路径创建一个散列吗?问题不是如何生成ID,而是如何创建jcr:uuid;如何调用该ID的生成。我试图了解这个ID是由JCR自动生成的(如果是,其他属性如何生成),还是有一个事件处理程序被调用。也许它能帮助你:简言之,这取决于JCR的实现,在CQ的情况下,这是Jackrabbit,在那里你应该能够获得源代码来了解它是如何完成的。非常感谢。这目前在5.6.1中,但很快将成为6.1。