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.txtimportMe.txttestMacro.txt

ありがとう。

4

1 に答える 1

2

の重要なポイントは#import、テンプレートに独自の名前空間を与えることで、テンプレート間の干渉を防ぐことです。それがうまくいかない理由です。テンプレートでその変数を共有する場合は、グローバル変数:<#global a = 0>の代わりに#assign. または、インポートした名前空間に変数を設定することもできます<#assign a = 0 in my>

于 2012-10-03T15:34:01.503 に答える