在OSGI中导入JcrTagImpl类时出现问题
我需要导入JcrTagImpl类,该类位于CQ Day Communique 5 Tagging jar文件(com.Day.CQ.CQ Tagging)中 然后我尝试在pom.xml的依赖项中添加上面的jar,如下所示,然后我可以将整个包作为com.day.cq.tagging.*导入在OSGI中导入JcrTagImpl类时出现问题,osgi,maven-3,aem,jcr,sling,Osgi,Maven 3,Aem,Jcr,Sling,我需要导入JcrTagImpl类,该类位于CQ Day Communique 5 Tagging jar文件(com.Day.CQ.CQ Tagging)中 然后我尝试在pom.xml的依赖项中添加上面的jar,如下所示,然后我可以将整个包作为com.day.cq.tagging.*导入 <dependency> <groupId>com.day.cq</groupId> <artifactId>cq-tagging</art
<dependency>
<groupId>com.day.cq</groupId>
<artifactId>cq-tagging</artifactId>
<version>5.7.18</version>
<scope>provided</scope>
</dependency>
com.day.cq
cq标记
5.7.18
假如
更新:我需要调用getTagID方法,它位于
com.day.cq.tagging.JcrTagImpl
类中。
AEM使用com.day.cq.tagging.TagCommandServlet
在标记控制台中显示标记ID。TagCommandServlet正在导入JcrTagImpl类并调用getTagID
方法
我有自己的servlet,我想调用
getTagID
。我无法直接调用JcrTagImpl实现的getTagID,因为它没有公开。可以通过任何注释来完成吗?请您指导我如何调用getTagId
方法。您试图直接调用实现而不是服务。通常,实现是不公开的,您必须使用服务
我想,TagManager是一种吊索服务,您可以使用它来处理标签。使用@Reference将其注入到您的服务中,或者使用sling.adapto()调整您的资源
编辑:
正如我前面提到的,您不能直接访问实现类,因为它不会由bundle导出
但是,要获得标签ID,您可以根据需要使用以下任何方法
@Reference
private JcrTagManagerFactory jcrTagManagerFactory;
protected void doGet(SlingHttpServletRequest req, SlingHttpServletResponse res) {
//First Method
ResourceResolver resolver = req.getResourceResolver();
Resource tagResource = resolver.resolve("<<path to the tag>>");
Tag tag1 = tagResource.adaptTo(Tag.class);
tag1.getTagID();
//Second Method
TagManager tagManager = resolver.adaptTo(TagManager.class);
Tag tag2 = tagManager.resolve("<<path to tag>>");
tag2.getTagID();
//Third Approach
Session session = resolver.adaptTo(Session.class);
TagManager tagManager = jcrTagManagerFactory.getTagManager(session);
Tag tag3 = tagManager.resolve("<<path to tag>>");
tag3.getTagID();
}
@Reference
私人JcrTagManagerFactory JcrTagManagerFactory;
受保护的无效数据集(SlingHttpServletRequest-req,SlingHttpServletResponse-res){
//第一种方法
ResourceResolver解析器=req.getResourceResolver();
Resource tagResource=resolver.resolve(“”);
tag1=tagResource.adapto(Tag.class);
tag1.getTagID();
//第二种方法
TagManager TagManager=resolver.adapto(TagManager.class);
Tag tag2=tagManager.resolve(“”);
tag2.getTagID();
//第三种方法
Session Session=resolver.adapto(Session.class);
TagManager TagManager=jcrTagManagerFactory.getTagManager(会话);
Tag tag3=tagManager.resolve(“”);
tag3.getTagID();
}
}
使用,您可以获取当前资源上设置的标记或查询标记等。谢谢提供信息。是的,你是对的。我无法导入那个imp类。我已经更新了。你能检查一下吗。