Freemarker - 定义自定义内置版本/过滤器

时间:2013-11-08 10:34:46

标签: freemarker

是否可以在ftl中定义自定义build-ins(名称不再合适)? 我不想让它成为一个函数,而是一个内置函数,因为语义前提。

2 个答案:

答案 0 :(得分:4)

这是不可能的,?语法是为内置函数保留的。 (这意味着将来BTW会发生变化。可悲的是,在遥远的未来,从它之前的积压大小和消除的步伐来判断......)

答案 1 :(得分:1)

为了完整性,这里是Daniel's (@ddekany's) old response。我认为自2010年和2013年以来在这一领域没有太大变化:)

不,?something语法保留给核心函数以避免名称 添加新核心功能时发生冲突。你可以做 ${translate_into_swahili(mytext)}但是。为此,取决于你的 申请,做其中一个:

  • 创建一个模板,定义您的函数然后包含 普通模板中的#include#import。注意 函数可以使用#function在纯FreeMarker中实现,或者 在Java中作为TemplateMethodModelEx - s然后在哪里使用

    <#function foo>...</#function> use 
    <#assign foo=your.class.Name"?new()> instead. 
    
  • 在Java中实现函数TemplateMethodModelEx和put 它进入数据模型

  • 在Java中实现函数TemplateMethodModelEx,然后 使其在您初始化FreeMarker的单个位置上可用 Configuration.setSharedVariable(name, method)