我有这样的情况。我有文件夹a
,在其中我有a.ftl
和文件夹b
。文件夹b
内有b.ftl
。在b.ftl
我有[#macro macroName param1]...[/#macro]
如何从文件a
调用宏?我有intellij想法警告。我看到了这个链接https://intellij-support.jetbrains.com/hc/en-us/community/posts/206196939-Getting-Intellij-to-pick-up-Freemarker-macros所以我试图放置
[#-- @implicitly included --]
[#-- @ftlroot "" --]
到a.ftl
的顶部但不起作用。我正在研究freemarker docs http://freemarker.org/docs/ref_directive_macro.html但是有一个例子就是从同一个文件中调用宏。
答案 0 :(得分:4)
您可以使用<#import "/b/b.ftl" as b>
(最后b
可以是任何变量名称),然后您可以像<@b.macroName ...>
一样调用宏。将常用的宏/函数/值放入其他模板中#import
的模板中是常见的最佳做法。
您还可以在<#include "/b/b.ftl">
中使用/a/a.ftl
,然后您就可以使用<@macroName ...>
(没有b.
这样的名称空间前缀)。然而,#include
的常见用例是打印常见输出,因为它每次执行a.ftl
时都执行#include
- d。如果a.ftl
仅包含宏定义和其他可能无关紧要的分配。
导入和包含也可以在最顶层的模板中自动执行。为此,请参阅auto_imports
(Configuration.setAutoImports
)和auto_includes
(Configuration.setAutoIncludes
)配置设置。