档案testMacro.txt
<#import "./importMe.txt" as my>
<#assign a=0 >
<@my.macro1 />
${a}
档案importMe.txt
<#macro macro1 >
${a}
</#macro>
现在从java文件中,当我执行它时,它说。
Exception in thread "main" java.lang.RuntimeException: freemarker.core.InvalidReferenceException: Expression a is undefined on line 3, column 3 in importMe.txt at msjava.hdom.examples.DbQuery.main(DbQuery.java:59)
Caused by: freemarker.core.InvalidReferenceException: Expression a is undefined on line 3, column 3 in importMe.txt
但是如果我不进行导入,而是在文件testMacro.txt
中定义宏,那么它可以正常工作。
我想要做的是,我想要在文件a
中更改文件testMacro.txt
中的值importMe.txt
,以便稍后在{{1}中反映出来}}
感谢。
答案 0 :(得分:2)
#import
的一个重点是它通过为模板提供自己的命名空间来防止模板之间的干扰。所以这就是为什么它不起作用。如果您希望模板共享该变量,请使用全局变量:<#global a = 0>
而不是#assign
。或者,您可以在导入的命名空间中设置变量,如<#assign a = 0 in my>
。