在 AEM 6 中的 HTL/Sightly 中更改了内容

Content altered in HTL/ Sightly in AEM 6

这是我长期以来遇到的最奇怪的问题。我有一个在多字段中创作的 URL。 URL 有一个下划线,例如。 http://example.net/_pinkPanther_is_pink 目前在 ${item.link}

当我执行 <a href="${item.link}">Click</a> <br> ${item.link} 并检查时,它呈现为

    <a href="http://example.net/__pinkPanther_is_pink">Click</a>

 <br> http://example.net/_pinkPanther_is_pink

如果您注意到两个值都来自 Sightly 中的同一个变量,当 link 用于锚标记的 href 内时,上帝知道谁在 example.net/[ 之后添加了双下划线=13=]

有人知道到底发生了什么事吗?

这是由显示上下文感知 XSS 保护引起的。 Sightly/HTL 自动检测 HTL 表达式的显示上下文,使用它在 HTML 页面结构中的位置来检测它。

例如,如果表达式出现在渲染后会生成文本的位置,则称它在 text 上下文中。如果在属性值内找到它,则称它在 attribute 上下文中,依此类推。 htl specification 页面中有关上下文的更多信息。

在您的示例中,href 属性中的隐式上下文是 uri,而在后一种情况下是 text

为了覆盖此行为,您可以显式设置上下文,如 href="${item.link @ context='text'}