sling:resourceSuperType 如何影响吊索分辨率?

How is sling:resourceSuperType is impacting sling resolution?

您好正在了解吊索分辨率的工作原理。

我遇到了 Adob​​e aem 开发人员指南中提到的这种情况

https://docs.adobe.com/docs/en/aem/6-2/develop/the-basics.html

这是提到的场景- / a(没有任何资源超类型或资源类型)

b (sling:resourceSuperType = a)

c (sling:resourceSuperType = b)

x (sling:resourceType = c)

y (sling:resourceType = c, sling:resourceSuperType = a)

/x 的类型层次结构是 [c, b, a, ] 而 /y 的层次结构是 [ c, a, ] 因为 /y 有 sling:resourceSuperType 属性 而 / x 没有,因此它的超类型取自它的资源类型。

现在我明白了 /x 是如何解析的。但我不确定 /y。首先它解析为 /c。它本身有一个 sling:resourceSuperType 作为 b。吊索分辨率也应该不转到 /b 吗?如何覆盖超类型并将资源解析为 a 而不是 b。

Apache Sling documentation 中所述,如果为特定资源定义了 sling:resourceSuperType,它将被使用。如果它不存在,框架将使用由 sling:resourceType.

指向的资源定义的 sling:resourceSuperType

也就是说,在 /y 的情况下,/b 不会被视为超类型。 /y定义的sling:resourceSuperType本身直接指向/a。它将有效地隐藏在 /c 处定义的 sling:resourceSuperType 属性(并指向 /b),否则将被考虑在内。

这个例子在你链接到的 documentation page 上描述得很好。

根据我的经验,如果资源类型层次结构由定义组件的一组节点定义并作为 /apps 或 [=22= 的后代出现在存储库中,则大多数自定义 AEM 组件更易于维护](当在继承层次结构中包含 OOTB 组件时)。 /content 子树中存在的特定组件实例(包括负责呈现整个页面的实例)可以明确地定义一个 sling:resourceType 来确定其类型(继承与否)。就个人而言,我不喜欢在作为 /content 子树一部分的资源级别定义 sling:superResourceType,因为这会使层次结构更难推理。在我的脑海中,我想不出一个可以证明这种权衡的用例。如果他们知道一个好的,也许其他人可以权衡。