Freemarker入门

Freemarker入门

基础

标量类别

  • 字符串
  • 数字
  • 日期/时间
  • 布尔值
  1. 数据模型可以被看做是树状结构
  2. 标量存储单一的值
  3. 哈希表示存储变量和与其相关且有唯一标识名称变量的容器
  4. 序列式存储有序变量的容器。存储的变量可以通过数字索引来检索,索引通常从零开始。

模板

  • interpolations 插值 ${...}
  • FTL tags 标签 以符号# 开头,用户自定义的 FTL 标签使用@符号来代替#
  • Comments 注释 用<#---->来分 隔
  • directives 指令 就是所指的 FTL 标签。这些指令在 HTML 的标签(如<table>和 </table>)和 HTML 元素(如 table 元素)中的关系是相同的。

常用指令

1、 if 指令 <#if condition>和</#if> condition为true,显示中间内容,condition为false,中间内容被略过;使用<#else>标签可以指定当条件为假时程序执行的内容。
2、 list 指令

一、整体结构

1、注释:<#–注释内容–>,不会输出。
2、文本:直接输出。
3、interpolation:由 ${var} 或 #{var} 限定,由计算值代替输出。
4、FTL标记

二、指令:

freemarker指令有两种:
1、预定义指令:引用方式为<#指令名称>
2、用户定义指令:引用方式为<@指令名称>,引用用户定义指令时须将#换为@。
注意:如果使用不存在的指令,FreeMarker不会使用模板输出,而是产生一个错误消息。
freemarker指令由FTL标记来引用,FTL标记和HTML标记类似,名字前加#来加 以区分。如HTML标记的形式为

则FTL标记的形式是<#list>< /#list>(此处h1标记和list指令没有任何功能上的对应关系,只是做为说明使用一下)。
有三种FTL标记:
1)、开始标记:<#指令名称>
2)、结束标记:</#指令名称>
3)、空标记:<#指令名称/>
注意:
1) FTL会忽略标记之中的空格,但是,<#和指令 与 </#和指令 之间不能有空格。
2) FTL标记不能够交叉,必须合理嵌套。每个开始标记对应一个结束标记,层层嵌套。 如:
<#list>


  • ${数据}
    <#if 变量>
  • game over!


    </#if>

    </#list>
    注意事项:
    1)、FTL对大小写敏感。 所以使用的标记及interpolation要注意大小写。name与NAME就是不同的对象。<#list>是正确的标记,而<#List>则不是。
    2)、interpolation只能在文本部分使用,不能位于FTL标记内。如<#if ${var}>是错误的,正确的方法是:<#if var>,而且此处var必须为布尔值。
    3)、FTL标记不能位于另一个FTL标记内部,注释例外。注释可以位于标记及interpolation内部。