2013-12-11 5 views
1

Я пытаюсь выяснить, как получить ресурс jcr через его идентификатор. В основном я делаю следующее.Adobe CQ5.5, используя идентификатор узла, пропускает ссылки на ресурсы

component1

String compID = resource.adaptTo(Node.class).getIdentifier(); 

тогда, когда она будет передана в COMPONENT2 я хотел бы получить Component1. Если это помогает, я передаю идентификатор через Query String Parameters для поддержки некоторых других требований клиента.

component2

//code to get id from query string 
//want to do something like: 

Node resNode = resourceResolver.adaptTo(Node.class); 
Session jcrSession = resNode.getSession(); 
Resource myRes = jcrSession.getNodeByIdentifier(eventId).adaptTo(Resource.class); 

//use myRes as I please. 

2-й пример, конечно, не работает, и я понимаю, что узел не имеет поддержки adaptTo. Поэтому я более или менее любопытен, если кто-то может пролить свет на то, как я мог бы выполнить то, что мой пример компонента2 не выполняет.

спасибо, Броди

ответ

2

Вы должны адаптировать ResourceResolver непосредственно к Session. Затем получите узел по идентификатору. Там нет никакого способа, чтобы создать Resource из Node, поэтому используйте Node путь и получить Resource от ResourceResolver: Япом

Session jcrSession = resourceResolver.adaptTo(Session.class); 
Node node = jcrSession.getNodeByIdentifier(eventId); 
Resource resource = resourceResolver.getResource(node.getPath()); 
+0

это то, что я в конечном итоге делает: D – Brodie

+0

Я очень удивлен, что нет утилиты класса или что-нибудь в CQ, которое предлагает более эффективный способ получить ресурс на основе узла. Это все еще имеет место с CQ5.6? – radicaledward101

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

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