我正在撰写JSP code
,我已将sling taglibs
列为
<sling:defineObjects/>
包含外部文件的最佳方法是什么?
有两种选择:
- 包含文件:&lt;%@ include file =“global.jsp”%&gt;
- 将replaceSelectors用作
醇><sling:include replaceSelectors="global" />
两者都工作正常,但是当我使用include file选项时,我没有在global.jsp中获取sling请求对象。我想知道更多细节。
答案 0 :(得分:1)
因此,只有在某个条件下,您的全局文件与您正在编写的jsp位于同一位置才能正常工作。
您的第一个选择是在编译时包含文件global.jsp inline。然后修复它,如果你在global.jsp中更改了某些东西,它将不会被引入你重新编译这个servlet。
您列出的第二个选项是获取现有资源请求,并使用“global”更改选择器(如果有)。然后它通过吊索解析过程运行它以确定要包含哪个文件。
由于同一目录中的global.jsp将与您的请求匹配,因此将其包括在内。
有关详细信息,请参阅Sling URL Resolution,特别是示例部分,它将显示选择器如何指示要使用的jsp。
注意:正如我提到的那样有效,因为在这种情况下解析器会解析全局。如果您尝试添加的global.jsp位于不同的目录结构中,则无法正常工作。
现在回答您的具体问题,哪个更好。这取决于。如果您正在开发吊索,那么吊索包含被认为是更好的选择,因为当更改已识别的资源时它会更好地响应。
我应该注意,sling包含的具体用法不是global.jsp的正常用法,因为全局文件通常处于固定位置,你想要使用该特定版本。
吊索的更常见用法包括指定路径和/或资源。
您的选项2的有趣用法是,解析的实际文件与组件有关,并通过吊索解析确定,因此您可以扩展或覆盖此组件并包含将使用的新global.jsp