Freemarker 模板中的数据类型由以下几种:java
布尔型:等价于 Java 的 Boolean 类型,不一样的是不能直接输出,可转换为字符串输出数组
日期型:等价于 java 的 Date 类型,不一样的是不能直接输出,须要转换成字符串再输出ide
数值型:等价于 java 中的 int,float,double 等数值类型函数
有三种显示形式:数值型(默认)、货币型、百分比型学习
字符型:等价于 java 中的字符串,有不少内置函数code
sequence 类型:等价于 java 中的数组,list,set 等集合类型排序
在Servlet中设置布尔类型的数据索引
// 布尔类型 request.setAttribute("flag", true);
获取数据ci
```F#
<#--
数据类型:布尔类型
在freemarker中布尔类型不能直接输出;若是输出要先转成字符串
方式一:?c
方式二:?string 或 ?string("true时的文本","false时的文本")
-->
${flag?c} <br>
${flag?string} <br>
${flag?string("yes","no")} <br>字符串
在Servlet中设置日期类型的数据
// 日期类型 request.setAttribute("createDate",new Date());
获取数据
```F#
<#--
数据类型:日期类型
在freemarker中日期类型不能直接输出;若是输出要先转成日期型或字符串
在Servlet设置数值型的数据
// 数值类型 request.setAttribute("age",18); // 数值型 request.setAttribute("salary",10000); // 数值型 request.setAttribute("avg",0.545); // 浮点型
获取数据
```F#
<#--
数据类型:数值类型
在freemarker中数值类型能够直接输出;
若有疑问,可加我私人VX[ kengwanglaoxue ],更多Java学习资料关注公众号【乐字节】获取
在Servlet中设置字符串类型的数据
// 字符串类型 request.setAttribute("msg","Hello "); request.setAttribute("msg2","freemarker");
获取数据
```F#
<#--
数据类型:字符串类型
在freemarker中字符串类型能够直接输出;
字符串空值状况处理
FreeMarker 的变量必须赋值,不然就会抛出异常。而对于 FreeMarker 来讲,null 值和不存在的变量是彻底同样的,由于 FreeMarker 没法理解 null 值。
FreeMarker 提供两个运算符来避免空值:
① ! :指定缺失变量的默认值
${value!}:若是value值为空,则默认值是空字符串
${value!"默认值"}:若是value值为空,则默认值是字符串"默认值"
② ?? :判断变量是否存在
若是变量存在,返回 true,不然返回 false
${(value??)?string}
```F#
<#-- 若是值不存在,直接输出会报错 -->
<#--${str}-->
<#-- 使用!,当值不存在时,默认显示空字符串 -->
${str!}<br>
<#-- 使用!"xx",当值不存在时,默认显示指定字符串 -->
${str!"这是一个默认值"}<br>
<#-- 使用??,判断字符串是否为空;返回布尔类型。若是想要输出,须要将布尔类型转换成字符串 -->
${(str??)?string}<br>
### sequence 类型 1. 在Servlet中设置序列类型的数据 ```java // 序列类型 (数组、List、Set) // 数组操做 String[] stars = new String[]{"周杰伦","林俊杰","陈奕迅","五月天"}; request.setAttribute("stars",stars); // List操做 List<String> citys = Arrays.asList("上海","北京","杭州","深圳"); request.setAttribute("cityList",citys); // JavaBean集合 List<User> userList = new ArrayList<>(); userList.add(new User(1,"zhangsan",22)); userList.add(new User(2,"lisi",18)); userList.add(new User(3,"wangwu",20)); request.setAttribute("userList",userList);
获取数据
```F#
<#--
数据类型:序列类型 (数组、List、Set)
经过list指令输出序列
<#list 序列名 as 元素名>
${名称}
</#list>
获取序列的长度 ${序列名?size}
获取序列元素的下标 ${元素名?index}
获取第一个元素 ${序列名?first}
获取最后一个元素 ${序列名?last}
倒序输出 序列名?reverse 升序输出 序列名?sort 降序输出 序列名?sort?reverse 指定字段名排序 序列名?sort_by("字段名") 注:通常是JavaBean集合,对应的字段名须要提供get方法
-->
<#-- 数组操做 -->
<#list stars as star>
下标:${star?index} -- 名字:${star} <br>
</#list>
数组的长度:${stars?size} <br>
<#-- 获取第一个元素 -->
第一个元素:${stars?first} <br>
<#-- 获取最后一个元素 -->
最后一个元素:${stars?last} <br>
<hr>
<#-- List操做 -->
<#list cityList as city >
${city} <br>
</#list>
List的size:${cityList?size} <br>
<#-- 倒序输出 -->
<#list cityList?reverse as city >
${city} -
</#list>
<br>
<#-- 升序输出 -->
<#list cityList?sort as city >
${city} -
</#list>
<br>
<#-- 降序输出 -->
<#list cityList?sort?reverse as city >
${city} -
</#list>
<hr>
<#-- JavaBean集合 -->
<#list userList as user>
编号:${user.userId}
姓名:${user.uname}
年龄:${user.uage}
<br>
</#list>
<#-- 按照指定字段名排序 -->
<#list userList?sort_by("uage") as user>
${user.uname} |
</#list>
在Servlet中设置hash类型的数据
// Map操做 Map<String,String> cityMap = new HashMap<>(); cityMap.put("sh","上海"); cityMap.put("bj","北京"); cityMap.put("sz","深圳"); request.setAttribute("cityMap",cityMap);
获取数据
```F#
<#--
数据类型:hash类型
key遍历输出
<#list hash?keys as key>
${key} -- ${hash[key]}
</#list>
value遍历输出
<#list hash?values as value>
${value}
</#list>
-->
<#-- key遍历输出 -->
<#list cityMap?keys as key>
${key} -- ${cityMap[key]} <br>
</#list>
<#-- value遍历输出 -->
<#list cityMap?values as value>
${value} |
</#list>