Java replaceSelector和include文件之间的差异

Java replaceSelector和include文件之间的差异,java,jsp,sling,Java,Jsp,Sling,我正在写JSP代码,我已经将sling taglibs作为 <sling:defineObjects/> 包含外部文件的最佳方式是什么 有两种选择: 包含文件: 用作 这两种方法都可以正常工作,只是当我使用include file选项时,我在global.jsp中没有得到sling请求对象。我想知道更多的细节。因此,只有在特定的条件下,当您的全局文件与正在编写的jsp位于同一位置时,这才有效 第一个选项是在编译时内联包含global.jsp文件。这是固定的,如果您在global

我正在写
JSP代码
,我已经将
sling taglibs
作为

<sling:defineObjects/>

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

有两种选择:

  • 包含文件:
  • 用作

  • 这两种方法都可以正常工作,只是当我使用include file选项时,我在global.jsp中没有得到sling请求对象。我想知道更多的细节。

    因此,只有在特定的条件下,当您的全局文件与正在编写的jsp位于同一位置时,这才有效

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

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

    由于同一目录中的global.jsp将与您的请求相匹配,因此包含了它

    有关更多详细信息,请参见示例部分,该部分将显示选择器如何指示要使用的jsp

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

    现在回答你的具体问题,哪一个更好。视情况而定。如果您是在sling中开发的,那么sling include被认为是更好的选择,因为当标识的资源发生变化时,它的响应更好

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

    sling include更常见的用法是指定路径和/或资源


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

    非常感谢等待的答案