Aem 显示CQ页面的旧版本

Aem 显示CQ页面的旧版本,aem,Aem,出于审计目的,我需要创建一个工具,让作者可以查看CQ页面的旧版本。我使用以下代码(在使用cq:Page作为资源类型的SlingServlet中使用)通过JCR VersionManager获得了可用的版本: 版本的路径指向,例如,/jcr:system/jcr:versionStorage/d6/23/4f/d6234f36-3360-4024-bee2-411020ac63ae/1.0,在这里我可以看到一个名为jcr:frozenNode的子节点,它似乎代表这个特定版本的jcr:content

出于审计目的,我需要创建一个工具,让作者可以查看CQ页面的旧版本。我使用以下代码(在使用cq:Page作为资源类型的SlingServlet中使用)通过JCR VersionManager获得了可用的版本:

版本的路径指向,例如,
/jcr:system/jcr:versionStorage/d6/23/4f/d6234f36-3360-4024-bee2-411020ac63ae/1.0
,在这里我可以看到一个名为
jcr:frozenNode
的子节点,它似乎代表这个特定版本的jcr:content节点


如何让CQ在此版本中呈现页面?我希望url带有一些参数或选择器,但我没有找到任何文档。我试图用Timewarp对其进行反向工程,但那里的URL似乎仍然是原始的,魔法隐藏在某个地方。

我也与adobe支持部门联系过这一点,除了Timewarp之外,似乎没有实现这一点的内置功能。尽管如此,我还是做了一些实验,找到了一个可行的解决办法。虽然对于模板中有许多固定组件的复杂布局来说可能并不容易,但幸运的是,在我们的例子中,我们主要有一个parsys。 因此,我的解决方案如下:通过url中的两个选择器加载旧版本:

  • 我称之为“versionhistory”,它用于在页面组件上获取另一个名为
    versionhistory.jsp
    的呈现脚本
  • 包含实际版本/节点名称(将“.”替换为“u”)以不添加更多选择器
  • 在我的
    versionhistory.jsp
    中,我只是为parsys组件添加了正确的路径(以问题中的示例路径为例),并包含与默认脚本中相同的布局元素,例如
    page.jsp

    <cq:include path="/jcr:system/jcr:versionStorage/d6/23/4f/d6234f36-3360-4024-bee2-411020ac63ae/1.0/jcr:frozenNode/par" resourceType="foundation/components/parsys" />
    
    
    
    <cq:include path="/jcr:system/jcr:versionStorage/d6/23/4f/d6234f36-3360-4024-bee2-411020ac63ae/1.0/jcr:frozenNode/par" resourceType="foundation/components/parsys" />