我正在接受 Adobe CQ5 开发人员的培训,并试图了解组件中当前资源的位置。例如,在为图像组件创建小部件时:
属性是:
然后是一个复杂的组件:
属性是:
为什么是这样?我只是没有看到与当前资源和 jsp 文件的关系以供参考。为什么复杂组件不能只有 ./value 而不是 ./image/value?
主要原因是属性相互关联以定义如何绘制图像,并且应用程序的其他部分也需要这种安排。当作者配置镜像时,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
选择器。image
此选择器调用一个 servlet,该 servlet 从它在页面节点下找到的第一个节点提取信息jcr:content
。该image
节点具有fileReference
指向实际 DAM 图像的属性,即第二个 URL。servlet 然后呈现fileReference
属性中指定的 URL。
在您的第一个示例(徽标组件)中,属性与组件相关。如果您在 path 页面上有一个 parsys par
,那么如果您将 logo 组件添加到页面,您的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
节点下,以将这些属性与其他设置隔离开来。