FreeMarker的高级应用及在Web项目中的应用

672 阅读2分钟

这是我参与11月更文挑战的第12天,活动详情查看:2021最后一次更文挑战

FreeMarker的List指令

语法1

else 可选,代表如果没有迭代数据的话,就展示else的内容

sequence 你要迭代的数据变量名

item 迭代项的变量名

语法2

当你想在list指令里面使用列表,表格等标签时,若不嵌套items 指令,当数据没内容,则会输出空列表,所以我们使用items 来避免出现空列表和空表格在HTML页面上。

sequence 你要迭代的数据变量名

item 迭代项的变量名

sep指令 

当你需要在每一个迭代项目中放一些内容的时候,我们可以使用sep指令(插入的内容不能再第一项之前或者最后一项之后)

break 指令

在任意迭代过程中跳出,配合if指令一起使用

注意:像else和items,break只能在指令体内部使用,而不能移出到宏或被包含的模板中

升序 sort_by() 

语法:<#list list?sort_by("字段") as x> </#list>

降序sort_by()?reverse 

语法:<#list list?sort_by("字段") ?reverse as x> </#list>

list遍历Map

语法:<#list dataMap ? keys as key>${dataMap[key]}</#list>

语法参考 freemarker.foofun.cn/index.html

FreeMarker的内建函数

我们已经接触到的内建函数

sort_by

reverse

has_next

他们所拥有的共同特点

都是书写在 ? 号后面

都能实现某个功能(函数)

什么叫内建函数

所谓内建函数,就是由语法规定存在的函数。这些函数,包含在编译器的运行时库中,程序员不必单独书写代码实现它,只需要调用即可,他们的实现,由该编译器对应的厂商完成。简单的说,就是不需要引入任何外部资源就可以使用的函数。

图中除了字母顺序索引,其余都是内建函数哦。

FreeMarker在Web项目中的运用

使用jsp的案例改成FreeMarker

  1. 新建一个Springboot项目,把之前jsp项目中的starter中的jsp部分更换成FreeMarker部分,其他不变
  2. controller、repository、entity里面的内容直接拷贝过来
  3. 设置配置文件,除了数据库之外,还需要配置FreeMarker的后缀为ftl 
  4. 在templates文件夹下新建一个ftl文件,把jsp文件里的内容都拷贝过来,改写里面的代码
  5. 测试