从不同的文件中调用freemarker宏

时间:2017-10-17 10:26:32

标签: freemarker

我有这样的情况。我有文件夹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但是有一个例子就是从同一个文件中调用宏。

1 个答案:

答案 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_importsConfiguration.setAutoImports)和auto_includesConfiguration.setAutoIncludes)配置设置。

另请参阅:http://freemarker.org/docs/dgui_misc_namespace.html