我只是想知道jcr:primaryType和jcr:mixinTypes之间有什么区别,为什么要使用jcr:mixinTypes呢?这意味着什么?如果你检查crx中的/ content / dam文件夹,它将jcr:primaryType属性值显示为sling:OrderedFolder和jcr:mixinTypes as mix:lockable,rep:AccessControllable其中jcr:primaryType表示这是一个sling文件夹但是为什么是mixin类型。还浏览了这些文档http://www.day.com/specs/jcr/1.0/6.7.4_Primary_and_Mixin_Node_Types.html http://www.day.com/specs/jcr/1.0/6.7.5_Special_Properties_jcr_primaryType_and_jcr_mixinTypes.html,但却没有对这些文档有太多了解。
感谢。
答案 0 :(得分:11)
一个节点只能有一个jcr:primaryType但它可以有几个jcr:mixinTypes,所以将mixins视为“traits”或节点的其他方面是正确的。
虽然http://wiki.apache.org/jackrabbit/DavidsModel “数据优先,后期结构。可能”规则建议谨慎使用主节点类型,因为它们通常意味着强大的约束,mixins的约束要少得多,非常有用将节点标识为具有特定用途或属性。
例如,您提到的混合:可锁定mixin用于表示可以锁定节点。根据{{3}},只有mixin节点类型为mix:lockable的节点才能保存锁。任何类型的节点都可能被锁定,因此使用节点类型将无效。
答案 1 :(得分:7)
首先,您应该注意,属性jcr:primaryType
和jcr:mixinTypes
都在超级节点nt:base
中定义,然后由所有其他节点继承。
jcr:primaryType
属性指定节点的基本类型,并将在节点创建时分配,您可以将其视为对象的 BASE 类。 OO世界。可以使用Node.setPrimaryType('some-primary-type')
以编程方式完成
例如:nt:file
,nt:unstructured
...
jcr:mixinTypes
属性是一个多值的属性(不是单个属性值,但可以有一个列表),并且在节点创建时基本上可以是空的,因为它不是一个mondatory属性和一个节点根本没有jcr:mixinType
。
节点可以使用node.addMixin('some-mixin-type')
以编程方式添加mixin类型。
您可以将其视为OO世界中的接口,因为节点可以具有多个接口,并且它们旨在向该节点添加aditionnal属性(OO世界中的状态/实例变量)。
例如:mix:versionable
,mix:referenceable
答案 2 :(得分:2)
Mixin类型与接口类似,一个节点可以有多种mixin类型。
您可以使用mixin为节点启用功能,例如标记,请参阅:Taggable content