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>