模板语言:Velocity 和 FreeMarker
IntelliJ IDEA 让您在 Velocity (VTL)和 FreeMarker (FTL)中开发模板。
代码辅助和语法高亮依赖于 Apache Velocity 和 FreeMarker 插件,这些插件默认情况下在 IntelliJ IDEA 中捆绑和启用。 如果相关功能不可用,请确保您没有禁用插件。 如需更多信息,请参阅 打开插件设置。


默认支持以下文件类型:
VTL | .ft 、 .vm 、 .vsl |
FTL | .ftl 、 .ftlh 、 .ftlx |
要启用模板静态部分编写的语言的代码辅助(这些语言称为 模板数据语言 ),请执行以下操作之一:
将模板数据语言与项目中的文件和文件夹关联
在 设置 对话框 (Ctrl+Alt+S) 中,点击 语言和框架 ,然后点击 模板数据语言。
点击项目或相应目录或文件右侧的模板数据语言单元格,然后选择语言。
点击 OK 以应用更改。
可以直接在编辑器中使用 将模板数据语言更改为 上下文菜单命令为单个模板文件分配模板数据语言。
为相应的文件类型添加扩展模式
在 设置 对话框 (Ctrl+Alt+S) 中,点击 编辑器 ,然后点击 文件类型。
在 识别的文件类型 下,选择 FreeMarker 模板 或 Velocity 模板。
在 文件名模式 下,点击
。
在 添加通配符 对话框中,指定文件名扩展模式,选择一种语言,然后点击 OK。

点击 OK 以应用更改。
修复未解析的引用
IntelliJ IDEA 提供用于检测模板语言中未解决引用的 检查:

未解析的引用可以通过使用 intention actions来修复。 您可以选择在同一个文件中添加注释,或者创建一个单独的文件来存放注释。 更多信息请参阅 Special comments。

在后者的情况下,将创建一个默认名称为 velocity_implicit.vm 或 freemarker_implicit.ftl 的文件。 此文件以以下注释开头:
注释文件中提供了定义引用类型的代码补全功能。
如果您重命名文件或将其移动到源根目录内的不同位置,引用定义将不会丢失。
特殊注释
IntelliJ IDEA 提供了以下用于模板语言的特殊注释:
FreeMarker 注释使用 <#-- 和 --> 或 [#-- 和 --#] 进行分隔。
评论 | 描述 |
|---|---|
| 任何以该注释开头的 FreeMarker 文件都会包含在同一模块或其依赖项中的所有文件中。 使用这样的专用注释文件来定义 IDE 特定的注释,以免它们污染您的模板文件。 |
| 定义变量。 例如,以下注释声明了一个名为 <#-- @ftlvariable name="foo" type="java.lang.String" file="path/to/file" -->
要在这种情况下正确解析 |
| 定义了相对于其解析 <#-- @ftlroot "path/to.jar!/path/inside/jar" -->
|
Velocity 注释使用 #* 和 *# 进行分隔。
评论 | 描述 |
|---|---|
| 任何以此注释开头的 Velocity 文件将包含在同一模块中的所有文件中。 使用这样的专用注释文件来定义 IDE 特定的注释,以免它们污染您的模板文件。 |
| 定义变量。 例如,以下注释声明了一个名为 #* @vtlvariable name="foo" type="java.lang.String" file="path/to/file" *#
要在这种情况下正确解析 |
| 定义与此注释文件相关的模板宏文件。 例如,以下注释使 #* @vtlmacrolibrary path="lib.vm" file="file.vm" *#
|
| 定义 velocity.properties 文件和运行时相对于带有此注释的文件的根目录。 例如: #* @velocityproperties path=”path/to/velocity.properties” runtime_root=”path/to/runtime/root/dir” *#
|