返回

<center>Java Freemarker基本操作让你秒变大咖</center>

后端

Freemarker:Java 模板引擎详解

简介

Freemarker 是一个强大的 Java 模板引擎,它使我们能够轻松创建动态网页。它以其易用性、效率和对多种数据类型的支持而闻名。

依赖

要使用 Freemarker,我们需要将以下依赖项添加到我们的项目中:

<dependency>
  <groupId>org.freemarker</groupId>
  <artifactId>freemarker</artifactId>
  <version>2.3.31</version>
</dependency>

案例一:加载单个属性

让我们创建一个简单的例子来加载单个属性:

<#assign myName = "John Doe">

这将创建一个变量 myName,其值为 "John Doe"。

案例二:加载集合

Freemarker 还允许我们加载集合,例如地图和列表:

<#assign myMap = {
  "name": "John Doe",
  "age": 30
}>

<#assign myList = [
  "John Doe",
  "Jane Doe",
  "Bill Smith"
]>

这将创建一个名为 myMap 的地图,其中包含键值对 nameage。它还将创建一个名为 myList 的列表,其中包含三个字符串。

Controller

在我们的 Java 控制器中,我们可以将这些变量传递给我们的模板:

@Controller
public class MainController {

  @GetMapping("/")
  public String index(Model model) {
    model.addAttribute("name", "John Doe");
    return "01-basic";
  }

  @GetMapping("/map")
  public String map(Model model) {
    Map<String, Object> myMap = new HashMap<>();
    myMap.put("name", "John Doe");
    myMap.put("age", 30);
    model.addAttribute("map", myMap);
    return "map";
  }

  @GetMapping("/list")
  public String list(Model model) {
    List<String> myList = new ArrayList<>();
    myList.add("John Doe");
    myList.add("Jane Doe");
    myList.add("Bill Smith");
    model.addAttribute("list", myList);
    return "list";
  }
}

页面模板

最后,在我们的页面模板中,我们可以使用这些变量来生成 HTML:

<!DOCTYPE html>
<html>
<head>
  
</head>
<body>
  <h1>Hello, ${name}!</h1>

  <h1>Map:</h1>
  <ul>
    <#list map as entry>
      <li>${entry.key}: ${entry.value}</li>
    </#list>
  </ul>

  <h1>List:</h1>
  <ul>
    <#list list as item>
      <li>${item}</li>
    </#list>
  </ul>
</body>
</html>

总结

Freemarker 是一个强大的模板引擎,可为我们创建动态网页提供便利。它易于使用,高效且支持各种数据类型。通过几个简单的步骤,我们可以利用 Freemarker 的功能来生成动态、交互式内容。

常见问题解答

  • Freemarker 和 Thymeleaf 有什么区别?

    Thymeleaf 是另一个流行的 Java 模板引擎。它比 Freemarker 更加面向 Web,并提供了更高级的功能,例如片段缓存和表单处理。然而,Freemarker 对于初学者来说更简单,并且具有更广泛的数据类型支持。

  • Freemarker 是否支持国际化?

    是。Freemarker 提供了国际化支持,允许我们轻松创建支持多种语言的应用程序。

  • 如何调试 Freemarker 模板?

    Freemarker 提供了一个调试模式,允许我们逐步执行模板并检查变量的值。

  • Freemarker 是否支持 JSON 和 XML?

    是。Freemarker 通过第三方库支持 JSON 和 XML 数据类型。

  • 如何在 Freemarker 中使用自定义函数?

    我们可以创建自己的自定义函数并将其添加到 Freemarker 中,以扩展其功能。