Sling Resolution脚本调用顺序

时间:2014-11-30 13:06:10

标签: cq5 sling

我正在查看吊索如何根据网址调用脚本。在选择器的情况下它似乎工作正常,但如果我没有使用选择器,它让我很难理解:

我有一个页面/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不是。

由于

1 个答案:

答案 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)

  •   
  • 之前找到的脚本与稍后在处理顺序中找到的脚本匹配得更好。这意味着,该脚本更接近原始脚本   资源类型层次结构中的资源类型更早考虑。

  •   

现在回答你的问题,

  1. 你的html.jsp总是优先于你的component.jsp,而不是相反。

  2. 您的GET.jsp应该在最糟糕的情况下执行,即,当没有其他文件存在时,除非您从其他组件继承了此文件。