一种方法是添加一个测试:
<div data-sly-test="${properties.altText}">
<img src="${properties.imgMobile}" alt="${properties.altText}" />
</div>
当 altText 为非空时,上述条件将起作用。对于 altText 为空的情况,
<div data-sly-test="${!properties.altText}">
<img src="${properties.imgMobile}" alt="" />
</div>
请注意,alt=""
它没有使用 Sightly 语法,因此它将被 Sightly 处理器忽略,并且会alt=""
像 Sightly 忽略空字符串文字一样出现。
根据Sightly 文档:
请注意,其值计算为空字符串的属性(文字或通过 data-sly-attribute 设置)将在最终标记中删除。此规则的一个例外是设置为文字空字符串的文字属性将被保留。
就个人而言,我不认为这是最优雅的解决方案,但由于当前 Sightly 引擎在剥离空值方面的限制,这似乎是最有效的解决方案。
另一种选择是使用空数组:
<!--/* Like empty strings, empty arrays remove the attribute: */-->
<div title="${[]}"></div>
<!--/* outputs: */-->
<div></div>
<!--/* But an array containing just an empty string doesn't get removed: */-->
<div title="${['']}"></div>
<!--/* outputs: */-->
<div title=""></div>
希望这可以帮助。