freemarker自定义模板
时间: 2025-05-28 16:46:43 浏览: 22
### 创建和使用FreeMarker自定义模板
#### 配置环境
为了能够顺利创建并使用FreeMarker自定义模板,首先需要确保已经正确设置了开发环境。这通常涉及到引入必要的依赖库以及初始化`Configuration`对象来设置基本参数[^2]。
```xml
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
```
接着,在应用程序启动时或者适当的位置完成如下配置:
```java
import freemarker.template.Configuration;
// ...
Configuration cfg = new Configuration(Configuration.VERSION_2_3_30);
cfg.setDirectoryForTemplateLoading(new File("/templates"));
cfg.setDefaultEncoding("UTF-8");
cfg.setLocale(Locale.US);
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
```
#### 定义模板结构
当准备就绪之后,可以开始设计具体的HTML或其他类型的模板文件了。这些文件应当放置于之前指定的目录下(本例中为`/templates`),并且遵循特定命名约定以便后续调用。对于希望定制化的部分,则可以通过宏指令(`<#macro>`), 函数(`<#function>`), 或者导入外部资源等方式实现更灵活的内容生成逻辑[^1]。
例如,假设要构建一个用于展示用户列表的页面片段,可以在名为`userList.ftl`的文件里写下这样的代码:
```html
<ul class="users">
<#list users as user>
<li>${user.name} (${user.email})</li>
</#list>
</ul>
```
#### 实现数据传递与渲染过程
最后一步就是把实际的数据模型传入到上述编写的模板当中去,并最终得到完整的输出结果。此操作一般会借助于`Template`类配合相应的Map容器共同完成。下面给出了一段简单的演示程序说明这一流程是如何运作的:
```java
import java.io.StringWriter;
import java.util.HashMap;
public void renderUserList(List<User> userList) throws Exception {
Template template = cfg.getTemplate("userList.ftl");
HashMap<String, Object> dataModel = new HashMap<>();
dataModel.put("users", userList);
StringWriter out = new StringWriter();
template.process(dataModel, out);
System.out.println(out.toString());
}
```
以上便是有关如何创建及应用FreeMarker自定义模板的一个基础指南。当然,随着项目复杂度增加还可能涉及更多高级特性如内置函数扩展、国际化支持等话题值得进一步探索学习。
阅读全文
相关推荐

















