0

文件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,以便稍后在testMacro.txt.

谢谢。

4

1 回答 1

2

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

于 2012-10-03T15:34:01.503 回答