1.定义:freemarker是一个用Java开发的模板引擎,模板+数据模型=输出,文件后缀 .ftl
2.freemarker中使用list指令遍历数据模型中的数据:
<#list apps as app>
${app_index + 1}
${app.name}
${app.age}
</#list>
注意: _index:得到循环的下标,使用方法是在stu后边加"_index",它的值是从0开始
3.freemarker中map的遍历有三种方式
a. ${app['stu1'].name}
b. ${app.stu1.name}
c. <#list app?keys as k>
${k_index + 1} ${app[k].name}
</#list>
4.freemarker的if指令
<#if str.name =='小明'></#if>
5.freemarker的空值处理
a、判断某变量是否存在使用 “??” 用法为:variable??,如果该变量存在,返回true,否则返回false
例:为防止stus为空报错可以加上判断如下:
<#if stus??>
<#list stus as stu>
.....
.</#list>
</#if>
b、缺失变量默认值使用 “!” 使用!要以指定一个默认值,当变量为空时显示默认值。
例: ${name!''}表示如果name为空显示空字符串
如果是嵌套对象则建议使用()括起来。
例: ${(stu.bestFriend.name)!''}表示,如果stu或bestFriend或name为空默认显示空字符串。
6.freemarker的内建函数
a.内建函数的语法格式:变量 + ?+ 函数名称
例:${集合名?size}
b.日期格式化
显示年月日: ${today?date}
显示时分秒:${today?time}
显示日期+时间:${today?datetime}
自定义格式化: ${today?string("yyyy年MM月")}
c.内建函数c
map.put("point", 102920122); point是数字型,使用${point}会显示这个数字的值,不并每三
位使用逗号分隔。 如果不想显示为每三位分隔的数字,可以使用c函数将数字型转成字符串
输出 ,例如:${point?c}
d.json字符串转换成对象
例子:<#assign text="{'bank':'工商银行','account':'10101920201920212'}" />
<#assign data=text?eval /> 开户行:${data.bank} 账号:${data.account}