<center>Java Freemarker基本操作让你秒变大咖</center>
2024-01-20 00:29:04
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
的地图,其中包含键值对 name
和 age
。它还将创建一个名为 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 中,以扩展其功能。