出于审计目的,我得到了创建工具的要求,作者可以在其中查看旧版本的CQ页面。我设法使用以下代码获取JCR VersionManager的可用版本(在SlingServlet中使用cq:Page作为resourceType):
Session session = request.getResourceResolver().adaptTo(Session.class);
VersionManager vm = session.getWorkspace().getVersionManager();
VersionHistory versionHistory = vm.getVersionHistory(request.getResource().getPath());
VersionIterator vIt = versionHistory.getAllVersions();
while (vIt.hasNext()) {
Version version = vIt.nextVersion();
String no = version.getName();
Calendar createdDate = version.getCreated();
// do something with it
}
版本的路径指向例如/jcr:system/jcr:versionStorage/d6/23/4f/d6234f36-3360-4024-bee2-411020ac63ae/1.0
我可以看到一个名为jcr:frozenNode
的子节点,它似乎代表了这个特定版本的jcr:content节点。
如何告诉CQ在此版本中呈现页面?我希望有一个参数或选择器的网址,但我没有找到任何文档。我尝试使用Timewarp对其进行逆向工程,但是URL似乎仍然是原始的,魔法隐藏在某个地方。
答案 0 :(得分:1)
我也与adobe支持有关,并且在时间扭曲旁边似乎没有内置功能来实现这一目标。不过我做了一些实验,发现了一个可行的解决方法。虽然模板中有许多固定组件的复杂布局可能并不容易,但幸运的是我们主要有一个解析器。 所以我的解决方案如下:我通过url中的两个选择器加载旧版本:
versionhistory.jsp
的呈现脚本。在我的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" />