首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jcr:primaryType和jcr:mixinTypes有什么区别?

jcr:primaryType和jcr:mixinTypes有什么区别?
EN

Stack Overflow用户
提问于 2014-04-15 17:34:38
回答 3查看 13.7K关注 0票数 5

我很想知道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的这些文档,但并没有给出太多的区别。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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的节点才能持有锁。任何类型的节点都可能被锁定,因此使用节点类型将不起作用。

票数 12
EN

Stack Overflow用户

发布于 2014-04-16 17:03:46

首先,您应该注意到,属性jcr:primaryTypejcr:mixinTypes都是在超级节点nt:base中定义的,然后由所有其他节点继承。

jcr:primaryType属性指定节点的基本类型,并将在节点创建时分配,您可以将其视为OO世界中对象的基本类。它可以用Node.setPrimaryType('some-primary-type')编程来完成,例如:nt:filent:unstructured...

jcr:mixinTypes属性是一个多值属性(不是单个属性值,但可以有一个列表),基本上在节点创建时The可以是空的,因为它不是一个单属性,并且节点根本没有jcr:mixinType。节点可以使用node.addMixin('some-mixin-type')以编程方式获得添加的mixin类型。您可以将其视为面向对象世界中的接口,因为一个节点可以有多个接口,并且它们的目标是向该节点添加附加属性( OO世界中的状态/实例变量)。例如:mix:versionablemix:referenceable

票数 8
EN

Stack Overflow用户

发布于 2014-04-15 18:11:01

混入类型类似于接口,一个节点可以有多个混入类型。

您可以使用mixins为节点启用功能,例如标记,请参阅:Taggable content

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23079828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档