You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AEM 6中HTL/Sightly多字段URL渲染下划线重复异常问题

诡异的URL下划线重复问题解决方案

哇,这确实是个挺让人摸不着头脑的问题!同一个变量在HTML标签外输出完全正常,但放到<a>的href属性里就自动把单个下划线变成双下划线了,太奇怪了。

问题复现

你提到的场景代码:

<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

可能的原因

我之前在CMS模板开发中碰到过类似的情况,大概率是模板渲染引擎对HTML属性内容的特殊处理逻辑导致的:

  • 很多模板引擎(比如Freemarker、Velocity这类常用于Multifield场景的引擎)会对HTML属性值做额外的“安全处理”,可能误把单个下划线识别成了需要转义/重复的特殊标记;
  • 也有可能是Multifield组件本身的输出逻辑差异:直接输出文本时返回原始存储值,但输出到HTML属性时经过了一层不必要的字符替换处理。

解决办法

试试这几个方案,应该能解决问题:

  1. 关闭HTML属性的自动转义
    如果你用的是支持原生输出的模板引擎,直接让变量跳过转义处理。比如Freemarker里可以用:

    <a href="${item.link?no_esc}">Click</a> <br> ${item.link}
    

    Velocity则可以确保没有添加强制转义的指令,直接使用原始变量输出。

  2. 手动编码下划线
    把URL中的下划线替换成URL编码格式%5F,这样渲染引擎就不会把它当成特殊字符处理了。可以在输出时做替换:

    <a href="${item.link.replace('_', '%5F')}">Click</a> <br> ${item.link}
    

    浏览器会自动把%5F解析回下划线,不影响正常访问。

  3. 排查Multifield的输出逻辑
    检查一下Multifield组件的配置,看是否有针对属性输出的特殊过滤器/处理器,把它禁用或者调整成不对下划线做处理的规则。

内容的提问来源于stack exchange,提问作者Oliver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:34:52