FreeMarker基础知识汇总
- 一.数据类型
- 1.布尔类型
- 2.日期类型
- 3.数值类型
- 4.字符串类型
- 5.空值处理
- 6.sequence类型
- 6.1 数组类型
- 6.2 List类型
- 7.hash类型
- 二.常用指令
- 1.assign自定义变量指令
- 2.if elseif else逻辑判断指令
- 3.list遍历指令
- 4.macro自定义指令
- 5.nested占位指令
- 6.import导入指令
- 7.include包含指令
- 三.FreeMarker页面静态化
一.数据类型
1.布尔类型
布尔类型不可以直接被打印
setAttribute("flag",true);
${flag?C} -------------------------打印true
${flag?string}---------------------打印true
${flag?string('yes',no)}-----------打印喜欢
2.日期类型
日期类型同样不可以被直接打印,需要转换为日期或者字符串.
setAttribute("date",new date());
${date?date}----------------------------打印当前日期
${date?time}----------------------------打印当前时间
${date?datetime}------------------------打印当前日期加时间
${date?String("yyyy/MM/dd HH:mm:ss)}----格式化日期打印
3.数值类型
数值类型可以直接打印
setAttribute("num",10000);
setAttribute("avg",0.5467);
${num?c}--------------------------------数字转换为普通字符转
${num?string.curremcy}------------------转换为货币类型字符串
${avg?string.percent}-------------------转换为百分比类型字符串
${avg?string[0.##]}---------------------保留两位小数
4.字符串类型
字符串类型可直接打印
setAttribute("msg","我在摸鱼");
${msg?substring(0,2)}--------------------截取字符串
${msg?uncap_first}-----------------------首字母转小写
${msg?cap_first}-------------------------首字母大写
${msg?upper_case}------------------------全部转大写
${msg?lower_case}------------------------全部转小写
${msg?length}----------------------------取字符串长度
${msg?start_with("我")?string}-----------是否以a开头
${msg?end_with("鱼")?string}-------------是否以a结尾
${msg?index_of("摸")}--------------------获取指定字符的索引
${msg?trim}------------------------------去除字符串前后空格
${msg?replace("我","你")}----------------我换成你
5.空值处理
${str}-----------------------------------会报错
${str!}----------------------------------处理成空字符串不报错
${str!"str的数字不存在"}------------------显示后面信息
${(str??)?c}-----------------------------返回布尔类型判断是否存在,若打印需转换为字符串
6.sequence类型
6.1 数组类型
String[] languages=new String[]{"java","c#","c","c++"};
<#list languages as lan>
${lan}
<#list>----------------------------------循环打印字符串列表
${languages?size}------------------------获取序列的长度
${languages?first}-----------------------获取第一个元素
${languages?last}------------------------获取最后一个元素
6.2 List类型
List<String> cats=Array.asList("加菲猫","美短","英短","布偶");
<#list cats?reverse as cat>
${cat}
</#list>----------------------------------倒序输出
<#list cats?sort as cat>
${cat}
</#list>----------------------------------排序
<#list cats?sort?reverse as cat>
${cat}
</#list>----------------------------------排序后倒叙输出
List<cat> cats;//猫咪实体类列表
<#list cats?sort_by("age") as cat>
${cat.name}
</#list>----------------------------------根据年龄排序输出猫名字
7.hash类型
Map<String,String> catMap = new HashMap<>();
catMap.put("布偶","花色");
catMap.put("美短","深蓝条纹");
catMap.put("英短","蓝胖");
<#list catMap?keys as key>
${key} - ${catMap[key]}
</#list>----------------------------------输出键值对
<#list catMap?values as value>
${value} -
</#list>----------------------------------只输出值
二.常用指令
1.assign自定义变量指令
使用assign指令创建或替换变量
//定义单个变量
<#assign str="hello">
${str}
//定义多个变量
<#assign num = 1 names=["张三","李四","王五"]>
${num}
${names?join(",")}
2.if elseif else逻辑判断指令
<#assign score=60>
//lt小于 lte小于等于 gt大于 gte大于等于
<#if score lt 60>
摸鱼要偷偷的
<#elseif score==60>
<#else>
</#if>
<#if list??>
数据存在
<#else>
数据不为空
<#/if>
3.list遍历指令
<#assign numbers={"1","2","3","4"}
<#list users as user>
${user}
</#list>
4.macro自定义指令
<#macro fish>
究竟是谁在摸鱼!
<#/macro>
<@fish></@fish>
//自定义有参数指令,也可多参数
<macro queryTraitorBytime name>
摸鱼的叛徒是${name}
</#macro>
<@queryTraitorBytime name="laowang></@queryTraitorBytime>
//打印乘法表
<#macro mult num>
<#list 1..num as i>
<#list 1..i as j>
${j} * ${i}=${j*i}
<#/list>
<br>
<#/list>
<#/macro>
<@mult num=9></@num>
5.nested占位指令
<#macro nest>
<nested>
我是哈哈哈
</#macro>
6.import导入指令
导入其他页面来引用其中方法
<# import "front.ftl" as page>
<@page.mult></@page.mult>
7.include包含指令
<#include "hello.html">
<#include "模板.ftl">
<#include "nihao.txt"
三.FreeMarker页面静态化
生成