Adobe CQ5.5 с использованием идентификатора узла передает ссылки на ресурсы

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

компонент1

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

затем, когда он передается компоненту2, я хотел бы получить компонент1. Если это поможет, я передам идентификатор через параметры строки запроса, чтобы помочь поддержать некоторые другие требования клиента.

компонент2

//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.

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

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


person Brodie    schedule 11.12.2013    source источник


Ответы (1)


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

Session jcrSession = resourceResolver.adaptTo(Session.class);
Node node = jcrSession.getNodeByIdentifier(eventId);
Resource resource = resourceResolver.getResource(node.getPath());
person Tomek Rękawek    schedule 12.12.2013
comment
Да, это то, что я в итоге сделал :D - person Brodie; 13.12.2013
comment
Я очень удивлен, что в CQ нет служебного класса или чего-то еще, что предлагает более эффективный способ получения ресурса на основе узла. Это все еще так с CQ5.6? - person radicaledward101; 09.04.2014