在AEM HTL中能否使用动态属性名?示例:${class.map['prefix' + item.name]}
在HTL中使用动态属性名的可行性
是的,HTL(HTML Template Language,即Sightly)完全支持你示例中的这种动态属性名/键访问写法:${class.map['prefix' + item.name]}。
具体说明:
- HTL的表达式语法支持字符串拼接操作,
'prefix' + item.name会先计算出完整的键名(比如当item.name的值为"button"时,会生成'prefixbutton')。 - 对于对象的键访问,HTL支持使用方括号
[]来引用动态计算的键,逻辑和JavaScript的对象键访问一致。
注意事项:
- 确保
class.map是合法的可访问对象(比如Java Map、JavaScript对象或HTL支持的其他结构化数据类型)。 - 确认
item.name的值是字符串类型,或能被HTL自动转换为字符串;如果item.name可能为空,建议添加空值兜底,避免生成无效键名:
这样当${class.map['prefix' + (item.name ?: '')]}item.name为null或空时,会拼接空字符串,生成'prefix'作为键名,而非'prefixnull'。
内容的提问来源于stack exchange,提问作者broman
相关产品推荐
相关产品推荐

