Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java sling:resourceSuperType如何影响sling分辨率?_Java_Aem_Sling - Fatal编程技术网

Java sling:resourceSuperType如何影响sling分辨率?

Java sling:resourceSuperType如何影响sling分辨率?,java,aem,sling,Java,Aem,Sling,嗨,我正在看sling resolution的工作原理 我遇到了Adobe aem开发者指南中提到的这种情况 这就是所提到的情景- / a(没有任何资源超类型或资源类型) b(吊索:resourceSuperType=a) c(吊索:resourceSuperType=b) x(吊索:resourceType=c) y(吊索:resourceType=c,吊索:resourceSuperType=a) /x的类型层次结构为[c,b,a,],而/y的层次结构为[c,a,],因为/y具有sling

嗨,我正在看sling resolution的工作原理

我遇到了Adobe aem开发者指南中提到的这种情况

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

b(吊索:resourceSuperType=a)

c(吊索:resourceSuperType=b)

x(吊索:resourceType=c)

y(吊索:resourceType=c,吊索:resourceSuperType=a)

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

现在我了解了/x是如何解析的。但我不确定你的情况。首先,它决定采用/c。它本身有一个吊索:resourceSuperType作为b。如果吊索分辨率也不转到/b。如何覆盖超类型并将资源解析为a而不是b。

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

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

这个例子在你链接到的网站上有很好的描述


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

非常感谢你。我看了n遍,读了几行,但实际上无法处理那里写的内容。我对它的工作原理也有同样的想法,但实际上我想确定。非常感谢您的详细解释。我们也遵循您建议的相同结构。我之所以这么说,是因为我一直认为一旦找到resource:type,它就会忽略resourceSuperType,因为前者的优先级高于后者。很明显,我错了,然后有人指出了这个例子,这需要我理解这到底是怎么发生的