我很想知道jcr:primaryType和jcr:mixinTypes之间的区别,以及为什么要使用jcr:mixinTypes?这意味着什么?如果你在crx中检查/content/dam文件夹,它会将jcr:primaryType属性值显示为sling:OrderedFolder,将jcr:mixinTypes显示为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的这些文档,但并没有给出太多的区别。
谢谢。
发布于 2014-04-16 13:24:06
一个node只能有一个jcr:primaryType,但它可以有多个jcr:mixinType,因此将混合类型视为节点的“特征”或其他方面是正确的。
虽然http://wiki.apache.org/jackrabbit/DavidsModel“数据优先,结构可能”规则建议谨慎使用主节点类型,因为它们通常隐含着很强的约束,mixins的约束要少得多,对于识别具有特定用途或属性的节点非常有用。
例如,您提到的mix:lockable mixin用于表示节点可以锁定。根据http://www.day.com/specs/jcr/2.0/17_Locking.html,只有mixin节点类型为mix:lockable的节点才能持有锁。任何类型的节点都可能被锁定,因此使用节点类型将不起作用。
发布于 2014-04-16 17:03:46
首先,您应该注意到,属性jcr:primaryType和jcr:mixinTypes都是在超级节点nt:base中定义的,然后由所有其他节点继承。
jcr:primaryType属性指定节点的基本类型,并将在节点创建时分配,您可以将其视为OO世界中对象的基本类。它可以用Node.setPrimaryType('some-primary-type')编程来完成,例如:nt:file,nt:unstructured...
jcr:mixinTypes属性是一个多值属性(不是单个属性值,但可以有一个列表),基本上在节点创建时The可以是空的,因为它不是一个单属性,并且节点根本没有jcr:mixinType。节点可以使用node.addMixin('some-mixin-type')以编程方式获得添加的mixin类型。您可以将其视为面向对象世界中的接口,因为一个节点可以有多个接口,并且它们的目标是向该节点添加附加属性( OO世界中的状态/实例变量)。例如:mix:versionable,mix:referenceable
发布于 2014-04-15 18:11:01
混入类型类似于接口,一个节点可以有多个混入类型。
您可以使用mixins为节点启用功能,例如标记,请参阅:Taggable content
https://stackoverflow.com/questions/23079828
复制相似问题