我有以下 freemarker 模板:
[#local snippet ][#noparse]
[#assign out ]value: ${v}
[/#assign]
[/#noparse]
[/#local]
[#assign hook = snippet?interpret ]
...
[#macro trigger ]
[@hook /]
[/#macro]
...
[#list values as v ]
[@trigger ]
[/#list]
${out}
它本质上所做的是定义一个挂钩以在稍后的某个时刻执行,并定义一个宏来触发它的执行。
当我尝试渲染此模板时,出现以下错误:
The following has evaluated to null or missing:
==> v [in template "xxx.ftl->anonymous_interpreted" at line 1, column 17]
注意到以下内容可能会很有趣:
[#list values as v ]
[@hook ]
[/#list]
正在工作,即按我的预期渲染模板,value: xxx
为列表中的每个值打印。
- 有人知道这里出了什么问题吗?
- 有什么办法可以使这项工作按预期进行吗?
编辑
我刚刚发现,如果我通过常规宏而不是解释代码段,则不会发生错误:
[#assign hook = myMacro ]
...
但如果宏是在另一个命名空间中定义的,则不会。