freemarker

Posted lifuwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了freemarker相关的知识,希望对你有一定的参考价值。

freemarker

模板 + 数据模型 = 输出

数据模型(Data Model)

(root)
  |
  +- animals
  |   |
  |   +- elephant
  |   |   |   
  |   |   +- size = "large"
  |   |   |   
  |   |   +- price = 5000
  |   |
  |
  +- message = "It is a test"
  |
  +- misc
      |
      +- fruits
          |
          +- (1st) = "orange"
          |
          +- (2nd) = "banana"

上图中的变量扮演目录的角色

  • root, animals, elephant, misc被称为 hashes(哈希)。哈希表存储其他变量(被称为子变量), 它们可以通过名称来查找(比如animals或price)。
  • 存储单值的变量 (size,price,message) 称为 scalars(标量)。
    如果要在模板中使用子变量, 那应该从根root开始指定它的路径: animals.elephant.price。
  • 另外一种很重要的变量是 sequences (序列)。 它们像哈希表那样存储子变量,但是子变量没有名字,它们只是列表中的项。 比如,在下面这个数据模型中 misc.fruits 就是序列:
  1. 数据模型可以被看成是树形结构。
  2. 标量用于存储单一的值。这种类型的值可以是字符串,数字,日期/时间或者是布尔值。
  3. 哈希表是一种存储变量及其相关且有唯一标识名称的容器。
  4. 序列是存储有序变量的容器。存储的变量可以通过数字索引来检索,索引通常从0开始

模板

模板(FTL编程)是由如下部分混合而成的:

  • 文本:文本会照着原样来输出。

  • 插值:这部分的输出会被计算的值来替换。插值由 ${ and } 所分隔。插值仅仅可以在文本中使用。

  • FTL 标签:FTL标签和html标签很相似,但是它们却是给FreeMarker的指示,而且不会打印在输出内容中。FTL是区分大小写的,FTL 标签 不可以在其他 FTL 标签 和 插值中使用。

  • 注释:注释和HTML的注释也很相似,但它们是由 <#-- 和 -->来分隔的。注释会被FreeMarker直接忽略,更不会在输出内容中显示。注释可以放在FTL标签和插值中。



以上是关于freemarker的主要内容,如果未能解决你的问题,请参考以下文章

如何从源代码构建 freemarker?

如何在 Maven 中使用模板代码生成器(例如 freemarker)?

FreeMarker自定义指令--代码实现

SpringBoot获取Freemarker模板引擎,生成HTML代码

FreeMarker里如何调用java代码?

java工程中使用freemarker例子