2013-05-16 98 views
4

我很難理解爲什麼要使用資源而不是吊索中的節點。所以說我有一些簡單的訪問節點如下:吊索資源vs節點

NodeIterator headerNode = currentNode.getNodes(); 
//loop through and do something with the nodes. 

你將如何工作的資源,而不是節點。我聽說你通常應該在資源上工作而不是節點。但爲什麼?我真的不明白這會有什麼好處。我認爲我很難掌握哪些資源。我知道有文檔,但我找不到任何代碼示例如何使用它們。

+1

資源是一個更加複雜和強大的對象。例如adaptTo()方法非常有用。你甚至可以編寫自己的適配器! – santiagozky

回答

8

要查看的主要文檔是http://sling.apache.org/documentation/the-sling-engine/resources.html,它解釋了資源概念以及如何使用它們。

該API與JCR節點API有所不同,但使用相似的概念。資源確實更簡單的一件事是訪問屬性值,因爲您在ValueMap中獲取它們,並且缺少屬性不會拋出異常。

上述文檔應說明的主要模式,總之這些都是:

  • 您從吊帶請求獲得資源,或者使用ResourceResolver服務
  • 資源可以適應於ValueMap到訪問其屬性
  • 資源可以,如果你需要切換到JCR API
  • Resource.listChildren(...)可適應節點類似於Node.getNodes()
  • Resource.get ResourceResolver()提供了一個ResourceResolver,通過搜索或路徑訪問其他資源。

該資源用於抽象內容存儲,以便可以在Sling中使用除JCR之外的其他後端,並將Sling的視圖統一到內部使用的數據和內容上。

對於應用程序級編程,在我看來,JCR API非常好,我不會僅僅爲了它而使用Resource。但有些情況下Resource API使事情變得更簡單。