freemark页面静态化

Freemarker页面静态化

freemarker的核心指令

1. list指令

1
2
3
4
5
6
7
8
<#list stus as stu>
        <tr>
            <td>${stu_index + 1}</td>
            <td>${stu.name}</td>
            <td>${stu.age}</td>
            <td>${stu.mondy}</td>
        </tr>
    </#list>

2. 遍历Map数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
方式一: 输出stu1的学生信息:<br/>
姓名:${stuMap['stu1'].name}<br/>
年龄:${stuMap['stu1'].age}<br/>
方式二: 输出stu1的学生信息:<br/>
姓名:${stuMap.stu1.name}<br/>
年龄:${stuMap.stu1.age}<br/>
方式三:
<#list stuMap?keys as k>
<tr>
    <td>${k_index + 1}</td>
    <td>${stuMap[k].name}</td>
    <td>${stuMap[k].age}</td>
    <td >${stuMap[k].mondy}</td>
</tr>
</#list>

3. if指令

1
<#if stu.name =='小明'>style="background:red;"</#if>>${stu.name}

4. 运算符

1、算数运算符 FreeMarker表达式中完全支持算术运算,FreeMarker支持的算术运算符包括:+, - , * , / , %

2、逻辑运算符 逻辑运算符有如下几个: 逻辑与:&& 逻辑或:|| 逻辑非:! 逻辑运算符只能作用于布尔值,否则将产生错误

3、比较运算符 表达式中支持的比较运算符有如下几个:

​ 1) =或者==:判断两个值是否相等.

​ 2) !=:判断两个值是否不等.

​ 3) >或者gt:判断左边值是否大于右边值

​ 4) >=或者gte:判断左边值是否大于等于右边值

​ 5) <或者lt:判断左边值是否小于右边值

​ 6) <=或者lte:判断左边值是否小于等于右边值
注意: =和!=可以用于字符串,数值和日期来比较是否相等,但=和!=两边必须是相同类型的值,否则会产生错误,而且
FreeMarker是精确比较,”x”,”x “,”X”是不等的.其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时
候,使用gt等字母运算符代替>会有更好的效果,因为 FreeMarker会把>解释成FTL标签的结束字符,当然,也可以使用括
号来避免这种情况,如:<#if (x>y)>

5. 空值处理

1、判断某变量是否存在使用 “??” 用法为:variable??,如果该变量存在,返回true,否则返回false
例:为防止stus为空报错可以加上判断如下:

1
2
3
4
5
 <#if stus??>
    <#list stus as stu>
     ......    
    </#list>
    </#if>

2、缺失变量默认值使用 “!” 使用!要以指定一个默认值,当变量为空时显示默认值。
例: ${name!’’}表示如果name为空显示空字符串。如果是嵌套对象则建议使用()括起来。
例: ${(stu.bestFriend.name)!’’}表示,如果stu或bestFriend或name为空默认显示空字符串。
注:!’’后面的空引号可以不写

6. 内建函数

内建函数语法格式: 变量+?+函数名称
1、和到某个集合的大小
${集合名?size}
2、日期格式化

1
2
3
4
显示年月日: ${today?date}
显示时分秒:${today?time}  
显示日期+时间:${today?datetime} <br>       
自定义格式化:  ${today?string("yyyy年MM月")}

3、内建函数c
map.put(“point”, 102920122);
point是数字型,使用${point}会显示这个数字的值,不并每三位使用逗号分隔。
如果不想显示为每三位分隔的数字,可以使用c函数将数字型转成字符串输出
${point?c}
4、将json字符串转成对象
一个例子:
其中用到了 assign标签,assign的作用是定义一个变量

1
2
3
<#assign text="{'bank':'工商银行','account':'10101920201920212'}" />
<#assign data=text?eval />
开户行:${data.bank}  账号:${data.account}
0%