根据Adobe的AEM开发文档,我们应该为所有图像渲染组件继承parbase组件。 有谁可以分享这种必要性背后的理由?任何人都可以指出其他替代方案(如果有的话)
答案 0 :(得分:0)
parbase有一个img.GET.java文件,该文件将处理所有具有' img'选择。如果你打电话给' component.img.png'图像将被处理。如果你不从parbase继承,你有两个选择:为你的组件实现img.GET.java或者在组件中保存图像的资源类型。当我有一个将图像数据存储在子节点中的组件时,我通常会这样做。
如果我想将图像保存在名为image的子节点中,这就是我在dialog.xml中添加的内容:
<image
jcr:primaryType="cq:Widget"
cropParameter="./image/imageCrop"
ddGroups="[media]"
fileNameParameter="./image/fileName"
fileReferenceParameter="./image/fileReference"
mapParameter="./image/imageMap"
name="./image/file"
requestSuffix="/image.img.png"
rotateParameter="./image/imageRotate"
title="Image"
xtype="html5smartimage">
<items jcr:primaryType="cq:WidgetCollection">
<restype
jcr:primaryType="cq:Widget"
ignoreData="{Boolean}true"
name="./image/sling:resourceType"
value="/libs/foundation/components/image"
xtype="hidden"/>
</items>
</image>
这里讨论了这种方法,例如:AEM Page Image in Page Properties Doesn't Apply a sling:resourceType
答案 1 :(得分:0)
请在Adobe AEM论坛帖子上找个厕所: - http://help-forums.adobe.com/content/adobeforums/en/experience-manager-forum/adobe-experience-manager.topic.html/forum__3vh2-why_do_we_needtoin.html
Parbase只是一个组件,您可以从中扩展它以获得一些OOTB功能。
如果我可以用技术语言说,Parbase是一个关键组件,因为它允许组件从其他组件继承属性,类似于面向对象语言(如Java)中的子类。
例如,当您在CRX Explorer中打开/ libs / foundation / components / text节点时,您会看到它具有名为sling:resourceSuperType的属性,该属性引用parbase组件。此处的parbase定义了用于呈现图像,标题等的树脚本,以便从此parbase子类化的所有组件都可以使用此脚本。
在创建自己的组件时,您不需要添加&#39; parbase&#39;作为超类型,除非你的组件需要在parsys中使用拖放功能。
AFAIK,parbase组件从未明确使用,但只有在Parsys中添加时才能促进组件的渲染。
&#34; parbase允许组件继承其他组件的属性&#34;
如果你在&#34; / libs / foundation / components&#34;下查看,大多数可授权和可拖动的组件都有&#39; parbase&#39;设置为他们的吊索:resourceSuperType&#39;这样当它们添加到Paragraph系统(Parsys组件)时,它们就可以继承图像和文本渲染属性。
文档链接: - https://docs.adobe.com/docs/en/cq/5-6-1/wcm/default_components/designmode.html#parbase
我希望这会有所帮助。
谢谢和问候
Kautuk Sahni