从不同文件调用 freemarker 宏
Call freemarker macro from different file
我有这样的情况。我有文件夹 a
,里面有 a.ftl
和文件夹 b
。在文件夹 b
中有 b.ftl
。在 b.ftl
我有 [#macro macroName param1]...[/#macro]
如何从文件 a
调用宏?我有 intellij idea 警告。我看到这个 link https://intellij-support.jetbrains.com/hc/en-us/community/posts/206196939-Getting-Intellij-to-pick-up-Freemarker-macros 所以我试着把
[#-- @implicitly included --]
[#-- @ftlroot "" --]
到 a.ftl
的顶部,但它不起作用。我正在查看 freemarker 文档 http://freemarker.org/docs/ref_directive_macro.html 但是有一个例子只是从同一个文件调用宏。
你可以使用<#import "/b/b.ftl" as b>
(最后一个b
可以是任何变量名),然后你可以像<@b.macroName ...>
一样调用宏。将通常需要的 macros/functions/values 放入在其他模板中 #import
编辑的模板中是常见的最佳做法。
你也可以在/a/a.ftl
中使用<#include "/b/b.ftl">
,然后你可以只使用<@macroName ...>
(没有像b.
那样的命名空间前缀)。然而,#include
的常见用例是打印公共输出,因为它执行整个 a.ftl
,每次它是 #include
-d。如果 a.ftl
仅包含宏定义和其他可能无关紧要的此类赋值。
导入和包含也可以在最顶层模板中自动执行。为此,请参阅 auto_imports
(Configuration.setAutoImports
) 和 auto_includes
(Configuration.setAutoIncludes
) 配置设置。
我有这样的情况。我有文件夹 a
,里面有 a.ftl
和文件夹 b
。在文件夹 b
中有 b.ftl
。在 b.ftl
我有 [#macro macroName param1]...[/#macro]
如何从文件 a
调用宏?我有 intellij idea 警告。我看到这个 link https://intellij-support.jetbrains.com/hc/en-us/community/posts/206196939-Getting-Intellij-to-pick-up-Freemarker-macros 所以我试着把
[#-- @implicitly included --]
[#-- @ftlroot "" --]
到 a.ftl
的顶部,但它不起作用。我正在查看 freemarker 文档 http://freemarker.org/docs/ref_directive_macro.html 但是有一个例子只是从同一个文件调用宏。
你可以使用<#import "/b/b.ftl" as b>
(最后一个b
可以是任何变量名),然后你可以像<@b.macroName ...>
一样调用宏。将通常需要的 macros/functions/values 放入在其他模板中 #import
编辑的模板中是常见的最佳做法。
你也可以在/a/a.ftl
中使用<#include "/b/b.ftl">
,然后你可以只使用<@macroName ...>
(没有像b.
那样的命名空间前缀)。然而,#include
的常见用例是打印公共输出,因为它执行整个 a.ftl
,每次它是 #include
-d。如果 a.ftl
仅包含宏定义和其他可能无关紧要的此类赋值。
导入和包含也可以在最顶层模板中自动执行。为此,请参阅 auto_imports
(Configuration.setAutoImports
) 和 auto_includes
(Configuration.setAutoIncludes
) 配置设置。