Aem CQ:如何通过比较页面的两个版本来获得更新的内容?

Aem CQ:如何通过比较页面的两个版本来获得更新的内容?,aem,Aem,我有个问题想问你。激活页面时,将为该页面创建版本。现在,如果我修改页面并将其与早期版本进行比较,那么它将以绿色显示内容作为差异 现在我想通过代码和API来实现这一点,并通过邮件发送修改后的内容 有什么解决方案吗?通过编程方式访问节点版本历史记录可以实现如下目的 Workspace workspace = node.getSession().getWorkspace(); VersionManager versionManager = workspace.getVersionManager();

我有个问题想问你。激活页面时,将为该页面创建版本。现在,如果我修改页面并将其与早期版本进行比较,那么它将以绿色显示内容作为差异

现在我想通过代码和API来实现这一点,并通过邮件发送修改后的内容


有什么解决方案吗?

通过编程方式访问节点版本历史记录可以实现如下目的

Workspace workspace = node.getSession().getWorkspace();
VersionManager versionManager = workspace.getVersionManager();
VersionHistory versionHistory = versionManager.getVersionHistory(nde.getPath());
VersionHistory允许您访问特定的javax.jcr.version.version节点版本扩展节点

要创建特定组件的差异,您可能会对com.day.cq.commons.DiffInfo感兴趣。
有关更多信息,请参阅。

通过编程方式访问节点版本历史记录可以实现如下目的

Workspace workspace = node.getSession().getWorkspace();
VersionManager versionManager = workspace.getVersionManager();
VersionHistory versionHistory = versionManager.getVersionHistory(nde.getPath());
VersionHistory允许您访问特定的javax.jcr.version.version节点版本扩展节点

要创建特定组件的差异,您可能会对com.day.cq.commons.DiffInfo感兴趣。
有关更多信息,请参阅。

从我看到的页面处于差异模式时,每个组件都负责为其呈现的内容呈现差异输出

在您自己的组件中,似乎可以使用/api来实现您自己对差异的支持。然后,您可以在自己的组件中看到内容的差异

这将使您在当前版本和所选的早期版本之间存在差异:

ValueMap currentValues = ResourceUtil.getValueMap(resource);
String title = currentValues.get(NameConstants.PN_TITLE, "");

DiffInfo diffInfo = resource.adaptTo(DiffInfo.class);    
ValueMap diffValues = ResourceUtil.getValueMap(diffInfo.getContent());
String diffText = diffValues.get(NameConstants.PN_TITLE, "");

DiffService diffService = sling.getService(DiffService.class);
String diffOutput = diffInfo.getDiffOutput(diffService, title, diffText, false);

当页面上的所有组件都支持diff时,您将需要获取页面的呈现输出以包含在电子邮件中。你可以用这个。您可能会发现这很困难,因为电子邮件客户端不会以与浏览器相同的方式呈现HTML,例如外部CSS等问题。

从我所看到的页面处于差异模式时,每个组件都有责任呈现其呈现内容的差异输出

在您自己的组件中,似乎可以使用/api来实现您自己对差异的支持。然后,您可以在自己的组件中看到内容的差异

这将使您在当前版本和所选的早期版本之间存在差异:

ValueMap currentValues = ResourceUtil.getValueMap(resource);
String title = currentValues.get(NameConstants.PN_TITLE, "");

DiffInfo diffInfo = resource.adaptTo(DiffInfo.class);    
ValueMap diffValues = ResourceUtil.getValueMap(diffInfo.getContent());
String diffText = diffValues.get(NameConstants.PN_TITLE, "");

DiffService diffService = sling.getService(DiffService.class);
String diffOutput = diffInfo.getDiffOutput(diffService, title, diffText, false);
当页面上的所有组件都支持diff时,您将需要获取页面的呈现输出以包含在电子邮件中。你可以用这个。您可能会发现这很困难,因为电子邮件客户端不会以浏览器可能的方式呈现HTML,例如外部CSS等问题