2013-11-27 52 views
0

我写JSP code,我已经包括sling taglibs作为差异包括文件

<sling:defineObjects/> 

什么是包括外部文件的最好方法?

有两种选择:

  1. 包含文件:<%@ include文件= “global.jsp” %>
  2. 使用replaceSelectors<sling:include replaceSelectors="global" />

这两个工作正常,除了我是n当我使用包含文件选项时,在global.jsp中获取吊索请求对象。我想知道更多细节。

回答

1

所以这只适用于某个条件下,你有一个全局文件在你正在写的jsp相同的位置。

您的第一个选择是在编译时内联文件global.jsp。这是固定的,如果您在global.jsp中更改了某些内容,它将不会被重新编译该servlet。

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

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

请参阅Sling URL Resolution了解更多详情,特别是示例部分将显示选择器如何指示要使用的jsp。

注意:正如我所说的这样工作,因为在这种情况下解析器解析全局。如果您试图添加的global.jsp位于不同的目录结构中,则不起作用。

现在回答你的具体问题,哪个更好。这取决于。如果您正在使用吊索进行开发,那么吊绳包含被认为是更好的选择,因为当识别的资源发生变化时,吊索响应会更好。

我应该注意,sling include的具体用法并不是global.jsp的正常用法,因为全局文件通常位于固定位置,并且您希望使用该特定版本。

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

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

+0

非常感谢您期待已久的答案 – sachinjain024