如何编写无输入参数的FreeMarker(FTL)模板函数
是否可以编写无输入参数的FTL函数?
可以,FreeMarker原生支持无参数、无返回值的逻辑块定义,完全可以实现类似Java中void test() {}的效果,有两种常用实现方式:
- 使用
<#function>定义(适配函数写法)
定义时不填写参数列表即可,不需要返回值的话可以返回空值,示例:
调用方式:<#function test> <#-- 此处编写函数内部执行逻辑 --> <#return> </#function>${test()},无返回值的情况下不会向渲染结果输出任何内容。 - 使用
<#macro>定义(更适配无返回值场景)
如果你的逻辑本身不需要返回值、仅执行副作用操作,用宏指令更符合FTL的设计规范,示例:
调用方式:<#macro test> <#-- 此处编写宏内部执行逻辑 --> </#macro><@test/>,和FTL内置指令调用写法一致。
官方文档没有单独提及该场景,是因为参数列表本身属于可选声明项,无参数属于默认支持的基础语法,不需要单独做特殊说明。
内容的提问来源于stack exchange,提问作者Banupriya
相关产品推荐
相关产品推荐

