2013-05-16 4 views
4

У меня возникли проблемы с пониманием того, почему вы используете ресурсы вместо узлов в sling. Итак, скажите, что у меня есть что-то простое доступ к узлам, как показано ниже:Ресурс Sling vs node

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 несколько отличается от API узлов JCR, но использует аналогичные концепции. Единственное, что определенно проще в Ресурсах - это доступ к значениям свойств, поскольку вы получаете их в ValueMap, а отсутствующие свойства не вызывают исключения, например.

Вышеуказанные документы должны объяснить основные закономерности, короче те:

  • Вы получаете ресурс от Sling запроса или с помощью службы ResourceResolver
  • Ресурс может быть адаптирована к ValueMap к доступ к своим свойствам
  • Ресурс может быть адаптирована к узлу, если вам нужно переключиться на API JCR
  • Resource.listChildren (...) похож на Node.getNodes()
  • Resource.get ResourceResolver() предоставляет ResourceResolver, который предоставляет доступ к другим ресурсам путем поиска или путем.

Ресурс существует для абстрагирования хранилища контента, чтобы можно было использовать другие бэкэнды, чем JCR в Sling, и унифицировать представление Sling на данные и содержимое, которые он использует внутри.

Для программирования на уровне приложений, на мой взгляд, JCR API очень приятный, я бы не использовал Resource вместо этого только ради него. Но есть случаи, когда API ресурсов упрощает работу.

 Смежные вопросы

  • Нет связанных вопросов^_^