一、Freemarker概述
FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写;
FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序;
虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据。
二、模版+模型数据=输出
1、数据模型:
典型的数据模型是树型结构,可以任意复杂和深层次。
对内层变量的访问,需要从root开始,各部分用“.”分隔。
也有另外一种变量是使用数字索引,例如animals[0].name。
2、模版:
在FreeMarker模板中可以包括下面三种特定部分:
(1) ${…}:称为interpolations,FreeMarker会在输出时用实际值进行替代
(2) FTL标记(FreeMarker模板语言标记):类似于HTML标记,为了与HTML标记区分,用#开始(有些以@开始)
①If/elseif/else指令
<#if animals.python.price < animals.elephant.price>
Pythons are cheaper than elephants today.
<#else>
Pythons are not cheaper than elephants today.
</#if>
空值判断可以写成<#if book.name?? >
③switch指令
<#switch value>
<#case refValue1>
...
<#break>
③list指令
<#list animals as being>
<td>${being.name}<td>
</#list>
④include指令
<#include "/copyright_footer.html">
(3) 注释:包含在<#-- -->
注意事项:
- FTL区分大小写,所以list是正确的FTL指令,而List不是;${name}和${NAME}是不同的;
- Interpolation只能在文本中使用;
- FTL标记不能位于另一个FTL标记内部;
- 注释可以位于FTL标记和Interpolation内部;
- 多余的空白字符会在模板输出时移除;
- FreeMarker会忽略FTL标记中的空白字符;