Aem 如何在cq中将属性从源节点复制到目标节点

Aem 如何在cq中将属性从源节点复制到目标节点,aem,Aem,我想在另一个目标节点中使用getProperties()和setProperty从源节点获取一些属性。如何检查属性是否受保护。如果我复制了目标中的所有属性,它会给我ConstraintViolationException这可能是因为您正在尝试复制包括cq:primaryType的所有属性。如果在crx中看到,这些基本属性是不可编辑的 对于“复制”,您可以获取特定属性并设置特定属性,而不是复制和粘贴所有属性。您需要获取属性的定义: PropertyDefinition propDefinition

我想在另一个目标节点中使用getProperties()和setProperty从源节点获取一些属性。如何检查属性是否受保护。如果我复制了目标中的所有属性,它会给我ConstraintViolationException

这可能是因为您正在尝试复制包括cq:primaryType的所有属性。如果在crx中看到,这些基本属性是不可编辑的


对于“复制”,您可以获取特定属性并设置特定属性,而不是复制和粘贴所有属性。

您需要获取属性的定义:

PropertyDefinition propDefinition = node.getProperty("/yourprop").getDefinition();
在定义中,可以调用isProtected():

或者直接将其内联:

node.getProperty("/yourprop").getDefinition().isProtected();
为了进一步阅读,我建议: ; 第16.3.12章与受保护财产的相互作用

以及关于节点类型的JCR文档:

这对我没有帮助。我想复制除受保护的一个之外的所有内容。我想签入一个可以检查该属性是否受保护的文件。
node.getProperty("/yourprop").getDefinition().isProtected();