如何编写没有输入参数的 FreeMarker 模板函数

Posted

技术标签:

【中文标题】如何编写没有输入参数的 FreeMarker 模板函数【英文标题】:How to write a FreeMarker template function with no input parameters 【发布时间】:2021-10-23 17:54:30 【问题描述】:

是否可以编写一个没有输入参数的FTL函数

就像在 Java 中一样,您可以编写 void test() ,它不接受任何参数并且不返回任何内容。

我已阅读documentation。但是找不到关于这个特定主题的太多信息。

【问题讨论】:

【参考方案1】:

不接受任何参数就像<#function f>...</#function>

不返回值也可以通过简单地不调用<#return someValue> 并到达</#function>。但是,不返回任何内容的函数通常不是一个好主意。那么你想要的更有可能是一个宏(参见macro 指令)。在 FTL 中,函数是关于返回一个值,而宏是关于副作用(例如打印到输出,或发射火箭)。

【讨论】:

好的,谢谢.. 我已经按照你所说的定义了函数 f。并使用 $f() 调用。但它会引发以下错误“FreeMarker 模板错误:以下已评估为 null 或缺失:==> f()”。你能帮我做同样的事情吗? 对。在几乎所有情况下,您想要使用 FreeMarker 的返回值都会被激怒,因为没有。那么,如果你不需要返回值,为什么要使用函数而不是宏呢?

以上是关于如何编写没有输入参数的 FreeMarker 模板函数的主要内容,如果未能解决你的问题,请参考以下文章

如何从 FreeMarker 模板调用对象的 java 方法?

freemarker如何遍历模板中所有变量

freemarker模板中的日期格式问题

freemarker生成word文档

Java模板引擎 FreeMarker

FreeMarker与Thymeleaf