FreeMarker 数据类型
Freemarker 模板中的数据类型由如下⼏种:
布尔型:等价于 Java 的 Boolean 类型,不同的是不能直接输出,可转换为字符串输出
⽇期型:等价于 java 的 Date 类型,不同的是不能直接输出,需要转换成字符串再输出
数值型:等价于 java 中的 int,float,double 等数值类型
有三种显示形式:数值型(默认)、货币型、百分⽐型
字符型:等价于 java 中的字符串,有很多内置函数
sequence 类型:等价于 java 中的数组,list,set 等集合类型
hash 类型:等价于 java 中的 Map 类型
布尔类型
- 在Servlet中设置布尔类型的数据
// 布尔类型
request.setAttribute("flag", true);
- 获取数据
<#--
数据类型:布尔类型
在freemarker中布尔类型不能直接输出;如果输出要先转成字符串
⽅式⼀:?c
⽅式⼆:?string 或 ?string("true时的⽂本","false时的⽂本")
-->
${flag?c} <br>
${flag?string} <br>
${flag?string("yes","no")} <br>
⽇期类型
- 在Servlet中设置⽇期类型的数据
// ⽇期类型
request.setAttribute("createDate",new Date());
- 获取数据
<#--
数据类型:⽇期类型
在freemarker中⽇期类型不能直接输出;如果输出要先转成⽇期型或字符串
1. 年⽉⽇ ?date
2. 时分秒 ?time
3. 年⽉⽇时分秒 ?datetime
4. 指定格式 ?string("⾃定义格式")
y:年 M:⽉ d:⽇
-->
<#-- 输出⽇期格式 -->
${createDate?date} <br>
<#-- 输出时间格式 -->
${createDate?time} <br> <#-- 输出⽇期时间格式 -->
${createDate?datetime} <br>
<#-- 输出格式化⽇期格式 -->
${createDate?string("yyyy年MM⽉dd⽇ HH:mm:ss")} <br>
数值类型
- 在Servlet设置数值型的数据
// 数值类型
request.setAttribute("age",18); // 数值型
request.setAttribute("salary",10000); // 数值型
request.setAttribute("avg",0.545); // 浮点型
- 获取数据
<#--
数据类型:数值类型
在freemarker中数值类型可以直接输出;
1. 转字符串
普通字符串 ?c
货币型字符串 ?string.currency
百分⽐型字符串 ?string.percent
2. 保留浮点型数值指定⼩数位(#表示⼀个⼩数位)
?string["0.##"]
-->
<#-- 直接输出数值型 -->
${age} <br>
${salary} <br> <#-- 将数值转换成字符串输出 -->
${salary?c} <br> <#-- 将数值转换成货币类型的字符串输出 -->
${salary?string.currency} <br> <#-- 将数值转换成百分⽐类型的字符串输出 -->
${avg?string.percent} <br> <#-- 将浮点型数值保留指定⼩数位输出 (##表示保留两位⼩数) -->
${avg?string["0.##"]} <br>
字符串类型
3. 在Servlet中设置字符串类型的数据
// 字符串类型
request.setAttribute("msg","Hello ");
request.setAttribute("msg2","freemarker");
- 获取数据
<#--
数据类型:字符串类型
在freemarker中字符串类型可以直接输出;
1. 截取字符串(左闭右开) ?substring(start,end)
2. ⾸字⺟⼩写输出 ?uncap_first
3. ⾸字⺟⼤写输出 ?cap_first
4. 字⺟转⼩写输出 ?lower_case
5. 字⺟转⼤写输出 ?upper_case
6. 获取字符串⻓度 ?length
7. 是否以指定字符开头(boolean类型) ?starts_with("xx")?string
8. 是否以指定字符结尾(boolean类型) ?ends_with("xx")?string
9. 获取指定字符的索引 ?index_of("xx")
10. 去除字符串前后空格 ?trim
11. 替换指定字符串 ?replace("xx","xx")
-->
<#-- 直接输出 -->
${msg} - ${msg2} <br>
${msg?string} - ${msg2?string} <br> <#-- 1. 截取字符串(左闭右开) ?substring(start,end) -->
${msg2?substring(1,4)} <br> <#-- 2. ⾸字⺟⼩写输出 ?uncap_first -->
${msg?uncap_first} <br> <#-- 3. ⾸字⺟⼤写输出 ?cap_first -->
${msg2?cap_first} <br> <#-- 4. 字⺟转⼩写输出 ?lower_case -->
${msg?lower_case} <br>