replaceSelector和include文件之间的区别

时间:2013-11-27 09:11:50

标签: java jsp sling

我正在撰写JSP code,我已将sling taglibs列为

<sling:defineObjects/>

包含外部文件的最佳方法是什么?

有两种选择:

  
      
  1. 包含文件:&lt;%@ include file =“global.jsp”%&gt;
  2.   
  3. replaceSelectors用作 <sling:include replaceSelectors="global" />
  4.   

两者都工作正常,但是当我使用include file选项时,我没有在global.jsp中获取sling请求对象。我想知道更多细节。

1 个答案:

答案 0 :(得分:1)

因此,只有在某个条件下,您的全局文件与您正在编写的jsp位于同一位置才能正常工作。

您的第一个选择是在编译时包含文件global.jsp inline。然后修复它,如果你在global.jsp中更改了某些东西,它将不会被引入你重新编译这个servlet。

您列出的第二个选项是获取现有资源请求,并使用“global”更改选择器(如果有)。然后它通过吊索解析过程运行它以确定要包含哪个文件。

由于同一目录中的global.jsp将与您的请求匹配,因此将其包括在内。

有关详细信息,请参阅Sling URL Resolution,特别是示例部分,它将显示选择器如何指示要使用的jsp。

注意:正如我提到的那样有效,因为在这种情况下解析器会解析全局。如果您尝试添加的global.jsp位于不同的目录结构中,则无法正常工作。

现在回答您的具体问题,哪个更好。这取决于。如果您正在开发吊索,那么吊索包含被认为是更好的选择,因为当更改已识别的资源时它会更好地响应。

我应该注意,sling包含的具体用法不是global.jsp的正常用法,因为全局文件通常处于固定位置,你想要使用该特定版本。

吊索的更常见用法包括指定路径和/或资源。

您的选项2的有趣用法是,解析的实际文件与组件有关,并通过吊索解析确定,因此您可以扩展或覆盖此组件并包含将使用的新global.jsp