FreeMarker是一种模板引擎:是一种基于模板的,用来生成输出文本的通用工具。
FreeMarker的设计实际上是被用来生成HTML网页,尤其是通过基于实现了MVC模型的Servlet应用程序。使用MVC模式的动态网页的构思使得你可以将前端设计者从程序员分离出来,因为应用程序的逻辑和页面设计已经分开了。
FreeMarker仅仅使用模板生成文本页面来呈现已经准备好的数据。
<#list ["winter", "spring", "summer", "autumn"] as x>
${x}
#list>
也可以用start..end 定义存储数字范围的序列,这里的start 和end 是处理数字值表达式,比如2..5 和[2, 3, 4, 5]是相同的,但是使用前者会更有效率(内存
占用少而且速度快)。
1.4 使用原生字符串
字符序列$ { ;(#{)有特殊的含义,如果想要打印 ${,在开始的引号或者单引号之前放置字母r
使用if指令可以有条件地跳过模板的一部分,这和程序语言中的if是相似的。
<#if condition> <#if>标签之间的内容将会被忽略
<#if condition><#else><#if>
<#list sequence as loopVariable>repeatThis#list>
repeatThis部分将会在给定的sequence遍历时在每项中重复,在所有的重复中,loopVariable将持有当前项值。
使用include指令,我们可以在当前的模板中插入其他文件的内容。
${expression}:使用插值的方式,表达式计算的结果会打印到你放置的位置
内建函数提供供可用的内置功能。内建函数以?形式提供变量的不同形式或者其他信息。
自定义指令可以使用macro指令来定义。
宏是有一个变量名 模板段,这样就能进行重复性的工作
<#macro name...par> #macro>之间是模板段,可以包含插值和FLT标签,之间的内容是宏定义体,使用<@...>,称为宏调用。
name是宏的名称,par是参数,在宏名称后面位置是用来定义变量的。
<#macro name> <#nested>#macro>:自定义指令可以嵌套内容。
在用户自定义指令中使用";"代替as。
模板中可以使用在数据模型中定义的变量。在数据模型之外,模板本身也可以定义变量来使用。这些临时变量可以适应FRL指令创建和替换。
模板执行时都要维护它自己 这些变量的私有设置,这些变量在页面用以呈现,初始值为空,当模板执行结束这些变量便被销毁。
模板里定义的变量比定义在数据型中的同名参数有更高的优先级。
在模板中可以定义三种类型的变量:
在实际应用中数据模型经常会有可选的变量。(也就是说有时可能不存在实际值)。除了一些典型的人为原因导致失误,FreeMarker不能容忍引用不存在的变量,除非明确地告诉它当变量不存在时候如何处理。一个不存在的变量和一个是null的变量,对于FreeMarker来说是一样的。下面介绍典型的处理方法。
当user从数据模型中丢失时,模板将会将user的值表示为字符串”Anoymous"。
<#if user??>