Aem 使用节点标识符传递资源引用的Adobe CQ5.5

Aem 使用节点标识符传递资源引用的Adobe CQ5.5,aem,jcr,sling,Aem,Jcr,Sling,我试图通过jcr资源的标识符来检索它。基本上,我在做以下工作 组件1 String compID = resource.adaptTo(Node.class).getIdentifier(); 然后,当它被传递到component2时,我想检索component1。如果有帮助,我将通过查询字符串参数传递标识符,以帮助支持其他一些客户机需求 组件2 //code to get id from query string //want to do something like: Node resN

我试图通过jcr资源的标识符来检索它。基本上,我在做以下工作

组件1

String compID = resource.adaptTo(Node.class).getIdentifier();
然后,当它被传递到component2时,我想检索component1。如果有帮助,我将通过查询字符串参数传递标识符,以帮助支持其他一些客户机需求

组件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没有Adapter支持。因此,我或多或少感到好奇的是,是否有人能告诉我如何完成component2示例未能做到的事情

谢谢,,
Brodie

您应该直接将
ResourceResolver
改编为
会话。然后根据标识符获取一个节点。无法从
节点
创建
资源
,因此请使用
节点
路径并从
资源解析程序
获取
资源

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

是的,这就是我最后要做的:我很惊讶CQ中没有实用程序类或任何东西能够提供一种更有效的方法来获取基于节点的资源。CQ5.6仍然是这样吗?