我正在查看吊索如何根据网址调用脚本。在选择器的情况下它似乎工作正常,但如果我没有使用选择器,它让我很难理解:
我有一个页面/content/AEMProject/English/test.html
,其中resourceType AEMProject/components/page/basepage
资源基页有4个脚本文件:basepage.html.jsp , basepage.jsp , html.jsp, GET.jsp
。我红了Sling Best Match的概念。所以我有两个奇怪的案例。
1)我的basepage.html.jsp
正在执行,因为我认为它是最佳匹配。如果我删除此文件html.jsp
执行但我认为basepage.jsp
是第二好的情况。
2)如果我删除basepage.html.jsp , basepage.jsp , html.jsp
文件,我的GET.jsp
将无法呈现。
我在这里考虑将basepage作为选择器或IS不是。
由于
答案 0 :(得分:3)
从sling docs引用脚本路径优先化的规则定义如下:
- 匹配的请求选择器越多越好。
(请注意,具有多个选择器的脚本不会被选中,即如果你有一个脚本xyjsp,其中x和y是你的选择器,它会被吊索忽略。但它仍会选择脚本y.jsp
,存在于文件夹x
内,即,如果请求是针对test.xyhtml,那么
-basepage
|_x
|_y.jsp (selected)
|_x.y.jsp (ignored)
|_x.jsp (selected in case x/y.jsp is not present. The script containing the first selector is chosen in such cases.)
包含请求扩展名的脚本与没有请求扩展名的脚本匹配(仅适用于html)
之前找到的脚本与稍后在处理顺序中找到的脚本匹配得更好。这意味着,该脚本更接近原始脚本 资源类型层次结构中的资源类型更早考虑。
现在回答你的问题,
你的html.jsp总是优先于你的component.jsp,而不是相反。
您的GET.jsp应该在最糟糕的情况下执行,即,当没有其他文件存在时,除非您从其他组件继承了此文件。