В настоящее время я работаю над компонентами для AEM 6.0, я заметил довольно странное поведение атрибута атрибута данных с атрибутом, и мне интересно, это то, что было замечено другими (возможно, ошибка).AEM - Sightly: data-sly-attribute стирание css на теге
Возьмем следующий код:
ШАБЛОН (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;
}
с buildDataAttributeMapFromRe source, которая в основном заполняет HashMap на основе того, какой контент находится в компоненте.
Вопрос в том, когда этот код выполняется на Автор, он прекрасно работает, но когда я исполню ее на издателе:
class="btn btn-transparent"
не оказывает. Похоже данных хитрая-атрибут перезапись его и тем самым стирая его, потому что если я изменить шаблон к этому:
<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"
он отлично подходит для авторов и издателей.
Ошибка? Может быть, есть исправление для этого, что я не знаю ...? Любые советы были бы замечательными.
Благодаря Nicola
Вы пробовали контекст XSS? Вот документация: https://docs.adobe.com/docs/en/aem/6-0/develop/sightly/expression-language.html#Display Context Что-то вроде ** data-sly-attribute = " $ {attr.attributeMap @ context = 'styleString'} "** – Bambara