我正在接受Adobe CQ5开发人员的培训,我正在尝试了解组件中当前资源的位置。例如,在为图像组件创建窗口小部件时: 属性为:
然后是一个复杂的组件:
属性为:
这是为什么?我只是没有看到与当前资源和jsp文件的关系以供参考。为什么复杂的组件不能只有./value而不是./image/value?
答案 0 :(得分:1)
主要原因是属性彼此相关以定义如何绘制图像,并且应用程序的其他部分期望这种安排。当作者配置图像时,AEM将在页面的jcr:content节点下创建一个图像节点。
/content/mysite/mypage/jcr:content/image/<attributes>
基础Image类以及AbstractImageServlet期望某些属性显示在图像节点上。
例如,请注意这两个URL显示相同的图像。
1. http://localhost:4502/content/geometrixx/en/events/dsc.img.png
2. http://localhost:4502/content/dam/geometrixx/banners/dsc.jpg
第一个URL指向cq:page
节点并添加img
选择器。此选择器调用一个servlet,该servlet从页面的image
节点下找到的第一个jcr:content
节点提取信息。该image
节点具有指向实际DAM图像的fileReference
属性,该图像是第二个URL。然后,servlet呈现fileReference
属性中指定的URL。
在第一个示例中 - 徽标组件 - 属性与组件相关。如果您在路径par
的页面上有一个解析,那么如果您将徽标组件添加到页面,那么您的cq:page
节点下将有以下路径。
/content/mysite/mypage/jcr:content/par/logo/<attributes>
现在,当您使用img
选择器调用图像servlet时,它会考虑徽标的属性。
http://localhost:4502/content/mysite/mypage/jcr:content/par/logo.img.png
对于第二个示例 - 复杂组件 - 您要在image
节点下组织图像属性,以将这些属性与其他设置隔离开来。