Hi正在介绍如何使用sling解决方案。
我遇到了Adobe aem-developer指南中提到的这个场景
https://docs.adobe.com/docs/en/aem/6-2/develop/the-basics.html
这就是前面提到的场景-/a(没有任何资源超类型或资源类型)
B(吊索:resourceSuperType= a)
C(套索:resourceSuperType= b)
X(吊索:资源类型= c)
Y(套索:resourceType= c,套索:resourceSuperType= a)
/x的类型层次结构是c,b,a,而/y的层次结构是c,a,因为/y具有sling:resourceSuperType属性,而/x没有,因此它的超类型取自它的资源类型。
现在我知道/x是如何解析的了。但我不确定/y。首先它解析为/c。它本身有一个sling:resourceSuperType as b。是否也应该将sling解析为/b。超类型是如何被覆盖的,资源是如何解析为a而不是b的。
发布于 2017-08-18 20:38:57
正如Apache Sling documentation中所解释的,如果为特定资源定义了sling:resourceSuperType,则将使用它。如果它不存在,框架将使用由sling:resourceType指向的资源定义的sling:resourceSuperType。
也就是说,在/y的情况下,/b不会被视为超级类型。/y本身定义的sling:resourceSuperType直接指向/a。它将有效地隐藏在/c处定义的sling:resourceSuperType属性(并指向/b),否则将被考虑在内。
这个例子在你链接的documentation page上有很好的描述。
根据我的经验,如果资源类型层次结构由一组定义组件的节点定义,并作为/apps或/libs的后代存在于存储库中(当继承层次结构中包含OOTB组件时),则大多数自定义的AEM组件更易于维护。然后,/content子树中存在的组件的特定实例(包括负责呈现整个页面的实例)可以明确地定义确定其类型(是否继承)的sling:resourceType。就我个人而言,我不喜欢在属于/content子树的资源级别定义sling:superResourceType,因为这会使层次结构更难理解。在我的脑海中,我想不出一个用例来证明这种权衡是合理的。也许其他人可以参与进来,如果他们知道一个好的。
https://stackoverflow.com/questions/45755874
复制相似问题