如何在Freemarker模板中拼接字符串以获取资源包标签
解决Freemarker模板中拼接字符串作为资源键的问题
你之前的写法错误在于对Freemarker表达式语法的误用,正确的拼接方式应该直接在宏参数中写表达式,不需要额外的${}包裹:
<@spring.messageText "resource.bundle.key" + dataModel.value, "undefined"/>
为什么之前的写法不行:
- 第一种写法里,
${dataModel.value}不需要用${}包裹,因为在宏的参数位置本身就是表达式上下文,直接引用变量名即可。 - 第二种写法里,
${"resource.bundle.key" + ${dataModel.value}}属于嵌套${},这是Freemarker不允许的语法,会导致解析错误。
如果需要更清晰的代码结构,也可以先把拼接后的键赋值给变量,再传入宏:
<#assign resourceKey = "resource.bundle.key" + dataModel.value> <@spring.messageText resourceKey, "undefined"/>
这种方式可读性更强,也方便后续复用该键值。
内容的提问来源于stack exchange,提问作者Ousmane MBINTE
相关产品推荐
相关产品推荐

