更改要导入的文件中变量的值; Freemarker的

时间:2012-10-03 14:19:10

标签: java import macros freemarker

档案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}中反映出来}}

感谢。

1 个答案:

答案 0 :(得分:2)

#import的一个重点是它通过为模板提供自己的命名空间来防止模板之间的干扰。所以这就是为什么它不起作用。如果您希望模板共享该变量,请使用全局变量:<#global a = 0>而不是#assign。或者,您可以在导入的命名空间中设置变量,如<#assign a = 0 in my>