Aem 未在发布实例中删除节点
我通过mix:shareablemixin在父页面和子页面之间共享节点。在author实例中,数据的同步工作正常,但当页面被激活时,共享节点将使用不同的UUID创建(这会中断同步)。我编写这段代码是为了在UUID不同时重新克隆节点Aem 未在发布实例中删除节点,aem,jcr,sling,Aem,Jcr,Sling,我通过mix:shareablemixin在父页面和子页面之间共享节点。在author实例中,数据的同步工作正常,但当页面被激活时,共享节点将使用不同的UUID创建(这会中断同步)。我编写这段代码是为了在UUID不同时重新克隆节点 //parentPageNode and currentPageNode are jcr nodes of parent and current page respectively Node parentFooNode = parentPageNode.
//parentPageNode and currentPageNode are jcr nodes of parent and current page respectively
Node parentFooNode = parentPageNode.getNode("foo");
Node currentFooNode = currentPageNode.getNode("foo");
if(!(parentFooNode.getUUID().equals(currentFooNode.getUUID()))){
log.info("parent page foo node and child page foo node have different UUID");
//revolver factory obtained through @Reference Injection
// need admin creds to delete node in publish
ResourceResolver resourceResolver = resolverFactory.getAdministrativeResourceResolver(null);
Session session = resourceResolver.adaptTo(Session.class);
Workspace workspace = session.getWorkspace();
currentfooNode.remove();
log.info("node removed");
session.save();
log.info("session saved "+currentPageNode.hasNode("foo"));
workspace.clone(workspace.getName(), parentfooNode.getPath(),currentPageNode.getPath()+"/foo", false);
session.save();
}
问题是,当此代码运行时,节点不会被删除。因此,当克隆节点时,它会创建foo[2]节点,但日志显示“session saved false”(currentPageNode.hasNode(“foo”)返回false,即使它实际上没有删除节点)。奇怪的是,由于remove()调用没有异常。当UUID id不同时,如何删除节点,并在发布实例上将子页面foo节点与父页面foo节点重新同步。是否收到任何错误消息。。??你能在这里添加日志信息吗?这样可以很容易地调试我没有收到任何错误消息。。我想问题是我没有在我要删除的节点的父节点上调用save()方法,session.save()显然不足以保持更改。我放弃了这种方法,转而使用另一种方法,因此在实践中没有验证node.save()部分。