我想在另一个目标节点中使用getProperties()和setProperty从源节点获取一些属性。我如何检查财产是否受到保护。就好像我复制了目标中的所有属性一样,它给了我ConstraintViolationException
您需要获得属性的定义:
PropertyDefinition propDefinition = node.getProperty("/yourprop").getDefinition();
在定义上,您可以调用isProtected():
Boolean isPropertyProtected = propDefinition.isProtected();
或者直接内联:
node.getProperty("/yourprop").getDefinition().isProtected();
为了进一步阅读,我建议:http://www.day.com/specs/jcr/2.0/16_Access_Control_Management.html;第16.3.12章与受保护属性的相互作用
以及关于节点类型的JCR文档:http://jackrabbit.apache.org/jcr/node-types.html
这可能是因为您正在尝试复制包括cq:primaryType在内的所有属性。如果您在crx中看到,这些基本属性是不可编辑的。
对于复制,您可以获取特定特性并设置特定特性,而不是复制和粘贴所有特性。