这是我参与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
- 新建一个Springboot项目,把之前jsp项目中的starter中的jsp部分更换成FreeMarker部分,其他不变
- controller、repository、entity里面的内容直接拷贝过来
- 设置配置文件,除了数据库之外,还需要配置FreeMarker的后缀为ftl
- 在templates文件夹下新建一个ftl文件,把jsp文件里的内容都拷贝过来,改写里面的代码
- 测试