2013-11-27 47 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