吊带怎么样:resourceSuperType正在影响吊索分辨率?

时间:2017-08-18 11:43:59

标签: java cq5 aem sling

您正在查看吊索分辨率的工作原理。

我反对Adobe aem-developer指南

中提到的这种情况

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。它本身有一个吊索:resourceSuperType为b。吊带分辨率是否也应该转到/ b。如何覆盖超类型并将资源解析为a而不是b。

1 个答案:

答案 0 :(得分:4)

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

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

在您链接的documentation page上已经很好地描述了这个例子。

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