基本概念
freemarker是什么:模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。
內建函数:对字符串等的操作都是freemarker的內建函数,就是本身的api,相当于java的方法。
指令:由freemarker识别并执行一步步操作的命令的形式
一、控制语句
if else
总体是这样的结构:
其中(1)和(4)是必须的,
(2)(3)根据需要选择,其中(2)可以出现任意多次,
(3)只能出现一次
<#if condition>----------- ---(1)
...
<#elseif condition2>----------(2)
...
<#else>-----------------------(3)
...
</#if>------------------------(4)
只有一个if的情况:
<#if x = 1>
x is 1
</#if>
包含elseif的情况:
<#if x = 1>
x is 1
<#elseif x = 2>
x is 2
<#elseif x = 3>
x is 3
</#if>
包含else的用法:
<#if x = 1>
x is 1
<#elseif x = 2>
x is 2
<#elseif x = 3>
x is 3
<#elseif x = 4>
x is 4
<#else>
x is not 1 nor 2 nor 3 nor 4
</#if>
switch
<#switch value>
<#case refValue1>
...
<#break>
<#case refValue2>
...
<#break>
<#case refValueN>
...
<#break>
<#default>
...
</#switch>
二、循环迭代结构
总体语句如下:
这里books是后台传来的集合,book为每次循环的对象。
<#list books as book>
//显示book的name属性的值
${book.name}
</#list>
如何获取list集合中的下标序号----使用list的一个属性:_index
<#list books as book>
${book_index}
</#list>
判断集合不为空并且size大于0
<#if book?? && (books?size > 0)>-----前一个是判断集合是否存在,后一个是
<#list books as book>
//do something
</#list>
</#if>
三、字符串的操作
以下假设后台传来的字符串为name
防止字符串不存在的时候报错:${name!}
----------直接在后面加个叹号就可以了
屏蔽html标签:name?html
----------这样写就可以直接显示html标签,即使name为空,也不会报错
判断是否以某一特定字符串结尾:name?ends_with("mp4")
-------判断name是否结尾是mp4
判断是否以某一特定字符串开始:name?starts_with("J")
-------根据name的首字母是否是 "J" 返回布尔值true或false。
转化为大写:name?upper_case
转化为小写:name?lower_case
分割字符产:name?split(",")-----根据逗号来分割字符串,返回一个list
字符串的长度大于多少:<#if name?length gt 2>
----name的长度是否大于2 (大于gt、 小于lt、 大于等于gte、小于等于lte )
四、boolean类型值的处理
一般是将boolean类型的变量转化为字符串:
value?string('true', 'false')-----value为true则返回字符串true,value为false则返回字符串false,
五、逻辑符
最常用的就是:并且(&&)、或者(||)
六、常用
(1)${(book.name)!}与${book.name!}
的区别
${(book.name)!}:无论是对象book为空,还是book的name属性值为空,都不会报错
${book.name!}:当对象book为空时,会报错
参考
强烈推荐:FreeMarker手册