我目前正在研究 AEM 6.0 的组件,我注意到 data-sly-attribute 视觉属性的一个非常奇怪的行为,我想知道这是否是其他人已经注意到的东西(可能是一个错误)。
采取以下代码:
模板(html)
<div id="${properties.divId}"
data-sly-use.attr="com.something.sightly.promoModel"
data-sly-attribute="${attr.attributeMap}">
<a href="www.example.com"
class="btn btn-transparent"
data-sly-attribute.target="${properties.ckbNewWindow}"
**data-sly-attribute="${attr.attributeMap}"**>
${properties.ctaText}
</a>
</div>
模型(java)
public class PromoModel{
protected HashMap<String, String> attributeMap = new HashMap<String, String>();
@Override
public void activate() throws Exception {
attributeMap= ComponentUtils.buildDataAttributeMapFromResource(Constants.DATA_ATTRIBUTES_FIELD, getRequest());
}
public HashMap<String, String> getAttributeMap(){
return attributeMap;
}
使用 buildDataAttributeMapFromResource 函数,该函数基本上根据组件中的内容填充 HashMap。
问题是,当在 Author 上执行此代码时效果很好,但是当我在 Publisher 上执行它时:
class="btn btn-transparent"
不渲染。似乎 data-sly-attribute 正在覆盖它并因此将其删除,因为如果我将模板更改为:
<div id="${properties.divId}"
data-sly-use.attr="com.something.sightly.promoModel"
data-sly-attribute="${attr.attributeMap}">
<a **data-sly-attribute="${attr.attributeMap}"**
href="www.example.com"
class="btn btn-transparent"
data-sly-attribute.target="${properties.ckbNewWindow}">
${properties.ctaText}
</a>
</div>
请注意
data-sly-attribute="${attr.attributeMap}"
在前面
class="btn btn-transparent"
它在作者和出版商上表现得非常好。
漏洞 ?也许有一个我不知道的解决方法......?任何建议都会很棒。
谢谢尼古拉