我想从源节点获取一些属性使用另一个目标节点中的getProperties()和setProperty。我如何检查该属性是否受到保护。如果我复制目的地中的所有属性,它会给我ConstraintViolationException
答案 0 :(得分:0)
您需要获取该属性的定义:
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
答案 1 :(得分:-1)
这可能是因为您正在尝试复制包含cq:primaryType的所有属性。如果您在crx中看到,这些基本属性是不可编辑的。
对于副本,您可以获取特定属性并设置特定属性,而不是复制和粘贴所有属性。