是否可以在 ftl 中定义自定义内置插件(名称不再合适)?
由于语义前提,我不想使其成为功能,而是内置。
问问题
874 次
2 回答
5
这是不可能的,?
语法是为内置函数保留的。(顺便说一句,这意味着将来会发生变化。可悲的是,在遥远的将来,从之前积压的规模和消除的速度来看......)
于 2013-11-09T15:14:40.530 回答
1
为了完整起见,这是Daniel (@ddekany) 的旧回复。我认为自 2010 年和 2013 年以来,该领域没有太大变化 :)
不,?something
语法是为核心函数保留的,以避免在添加新的核心函数时出现名称冲突。但是,您可以这样做
${translate_into_swahili(mytext)}
。为此,根据您的应用程序,执行以下操作之一:
创建一个定义您的函数的模板,然后将其包含
#include
在#import
您的普通模板中。请注意,函数可以在纯 FreeMarker 中实现,也可以#function
在 Java 中作为TemplateMethodModelEx
-s 实现,然后在您将使用的位置<#function foo>...</#function> use <#assign foo=your.class.Name"?new()> instead.
在 Java 中实现函数 as
TemplateMethodModelEx
,并将其放入数据模型中在 Java 中将函数实现为
TemplateMethodModelEx
,然后在初始化的地方使其FreeMarker
可用Configuration.setSharedVariable(name, method)
于 2017-09-26T00:48:50.740 回答