Freemarker学习

198 阅读2分钟

Freemarker 是一款基于 Java 的模板引擎,它提供了强大的模板语言和灵活的配置方式,适合用于 Web 应用程序中生成 HTML、XML 等文档。下面是一个简单的 Freemarker 教程,介绍其基本用法和常用功能。

(可以提前使用word写好对应的模板,然后另存为xml格式,将代码粘贴过来。还是比较方便的,渲染模板的方法千篇一律 具体数据看业务需求)

安装和使用

Freemarker 可以通过 Maven 或手动下载 jar 包的方式安装到项目中。在 Maven 中添加以下依赖:

xml复制代码
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.31</version>
</dependency>

在代码中使用 Freemarker 只需要创建一个 Configuration 对象,并设置模板文件所在的目录,在这个目录下可以包含多个模板文件。然后使用 getTemplate() 方法获取模板对象,并调用 process() 方法渲染模板:

import java.io.*;
import freemarker.template.*;

public class Main {
    public static void main(String[] args) throws Exception {
        // 创建 Configuration 对象
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_31);
        cfg.setDirectoryForTemplateLoading(new File("path/to/templates"));
        
        // 获取模板对象
        Template template = cfg.getTemplate("hello.ftl");
        
        // 渲染模板
        Writer out = new OutputStreamWriter(System.out);
        template.process(dataModel, out);
        out.flush();
    }
}

其中,dataModel 是一个 Map 对象,用于传递数据给模板。模板中可以使用 ${key} 的方式获取 Map 中的值,还可以使用各种指令和表达式进行逻辑处理和数据展示。

模板语言

Freemarker 的模板语言是一种类似 HTML 和 JSP 的标记语言,但更加简洁、灵活和安全。下面是一些常用的语法:

  • ${expr}:输出表达式的值;
  • <#if expr>...</#if>:条件判断语句;
  • <#list list as item>...</#list>:循环语句;
  • <@func arg1="val1" arg2="val2"/>:调用自定义函数;
  • <#assign var = expr>:赋值语句;
  • ${var!default}:输出变量,如果为 null 则使用默认值;
  • ${var[0]}:输出数组或列表中的元素;
  • ${var.key}:输出 Map 中的值;
  • ${var.method()}:调用 Java 对象的方法。

常用函数

Freemarker 内置了一些常用的函数,可以在模板中方便地调用:

  • string():将对象转换为字符串;
  • number():将对象转换为数字;
  • date():将对象转换为日期;
  • toUpperCase():将字符串转换为大写形式;
  • toLowerCase():将字符串转换为小写形式;
  • trim():去除字符串两端的空格;
  • join(separator, list):将列表中的元素用指定的分隔符连接成字符串。

除了内置函数,还可以在 Java 中定义自己的函数或方法,然后在模板中使用 <#function name>...</#function><@name arg1="val1" arg2="val2"/> 的方式调用。