FreeMarker基本用法 -2
1.FreeMarker 数据类型
1.1 布尔类型
不能直接输出,需要转换成字符串
输出形式:
1. ?c
2. ?string 或 ?string("为true显示的值","为false现实的值")
1.2 日期类型
不能直接输出,需要转换成字符串
1. ?date 年月日
2. ?time 时分秒
3. ?datetime 年与日时分秒
4. ?string(pattern) 自定义格式
y 年
M 月
d 日
H 时
m 分
s 秒
1.3 数值类型
可以直接输出,也可以转换成指定格式的字符串
1. ?c 普通字符串
2. ?string.currency 货币类型字符串
3. ?string.percent 百分比类型字符串
4. ?string["0.##"] 保留浮点型数值的指定小数位(一个#代表一个小数位,四舍五入)
1.4 字符串类型
可以直接输出
提供内置函数:
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_ofS("xx")
10. 去除字符串前后空格 ?trim
11. 替换指定字符串 ?replace("xx","xx")
1.5 序列类型
通过list指令输出序列
<#list 序列名 as 元素名>
${名称}
</#list>
获取序列的长度 ${序列名?size}
获取序列元素的下标 ${元素名?index}
获取第一个元素 ${序列名?first}
获取最后一个元素 ${序列名?last}
倒序输出 序列名?reverse
升序输出 序列名?sort
降序输出 序列名?sort?reverse
指定字段名排序 序列名?sort_by("字段名")
注:一般是JavaBean集合,对应的字段名需要提供get方法
-->
1.6 哈希类型
key遍历输出
<#list hash?keys as key>
${key} -- ${hash[key]}
</#list>
value遍历输出
<#list hash?values as value>
${value}
</#list>
1.7 FreeMarker不支持null值
FreeMarker 提供两个运算符来避免空值:
① ! :指定缺失变量的默认值
${value!}:如果value值为空,则默认值是空字符串
${value!"默认值"}:如果value值为空,则默认值是字符串"默认值"
② ?? :判断变量是否存在
如果变量存在,返回 true,否则返回 false
${(value??)?string}
<#-- ! :指定缺失变量的默认值 -->
<#--${str}-->
${str!} <br>
${str!"这是默认值"}<br>
${msg!"这是默认值"}<br>
<#-- ?? :判断变量是否存在 -->
${(str??)?c} <br>
${(msg??)?c}
1.8 数据类型代码实现
servlet类
/**
* 布尔类型
*/
req.setAttribute("flag", true);
/**
* 日期类型
*/
req.setAttribute("date", new Date());
/**
* 数值类型
*/
req.setAttribute("age",18); // 数值型
req.setAttribute("salary",10000); // 数值型
req.setAttribute("avg",0.545); // 浮点型
/**
* 字符串类型
*/
req.setAttribute("msg","Hello ");
req.setAttribute("msg2","freemarker");
/**
* 序列类型
*/
// 数组操作
String[] stars = new String[]{
"周杰伦","林俊杰","陈奕迅","五月天"};
req.setAttribute("stars",stars);
// List操作
List<String> citys = Arrays.asList("上海","北京","杭州","深圳");
req.setAttribute("cityList",citys);
// JavaBean集合
List<User> userList = new ArrayList<>();
userList.add(new User(1,"zhangsan",