在 FreeMarker 模板中使用自定义方法,可以通过以下步骤实现:
创建自定义方法:首先,你需要在 Java 中定义一个自定义方法。这个方法可以是一个静态方法,放在一个工具类中。
public class MyCustomFunctions { public static String greet(String name) { return "Hello, " + name + "!"; } }
将自定义方法添加到 FreeMarker 配置:在 FreeMarker 的配置中,将这个自定义方法注册为一个共享变量。
import freemarker.template.Configuration; import freemarker.template.TemplateModelModelFactory; import freemarker.template.TemplateHashModelEx; Configuration cfg = new Configuration(Configuration.VERSION_2_3_31); cfg.setClassForTemplateLoading(MyClass.class, "/templates"); // 注册自定义方法 cfg.setSharedVariable("myFunctions", new MyCustomFunctions());
在 FreeMarker 模板中使用自定义方法:在你的 FreeMarker 模板文件中,可以通过调用注册的共享变量来使用自定义方法。
<#-- 假设你已经注册了一个名为 myFunctions 的共享变量 --> <#assign name = "World"> ${myFunctions.greet(name)}
运行模板:最后,使用 FreeMarker 的模板引擎来处理模板,并将数据模型传递给它。
import freemarker.template.Template; import freemarker.template.TemplateException; import java.io.StringWriter; import java.io.IOException; Template template = cfg.getTemplate("myTemplate.ftl"); StringWriter writer = new StringWriter(); try { template.process(null, writer); // 传入数据模型 } catch (TemplateException | IOException e) { e.printStackTrace(); } String output = writer.toString(); System.out.println(output); // 输出 "Hello, World!"
这样,你就可以在 FreeMarker 模板中使用自定义方法了。确保在 Java 代码中正确设置 FreeMarker 的配置,并将自定义方法作为共享变量传递给模板。