编程语言
首页 > 编程语言> > java-sling:resourceSuperType如何影响悬带分辨率?

java-sling:resourceSuperType如何影响悬带分辨率?

作者:互联网

嗨,我正在研究吊索解决方案的工作原理.

我遇到了Adobe Aem开发人员指南中提到的这种情况

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

这是提到的情况-
/
一个(没有任何资源超类型或资源类型)

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(并指向/ b)处定义的sling:resourceSuperType属性,否则将考虑在内.

您链接到的documentation page很好地描述了该示例.

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

标签:aem,sling,java
来源: https://codeday.me/bug/20191025/1931105.html