看完就學會了FreeMarker 數據類型--樂字節Java

FreeMarker 數據類型

Freemarker 模板中的數據類型由以下幾種:java

  • 布爾型:等價於 Java 的 Boolean 類型,不一樣的是不能直接輸出,可轉換爲字符串輸出數組

  • 日期型:等價於 java 的 Date 類型,不一樣的是不能直接輸出,須要轉換成字符串再輸出ide

  • 數值型:等價於 java 中的 int,float,double 等數值類型函數

    有三種顯示形式:數值型(默認)、貨幣型、百分比型學習

  • 字符型:等價於 java 中的字符串,有不少內置函數code

  • sequence 類型:等價於 java 中的數組,list,set 等集合類型排序

  • hash 類型:等價於 java 中的 Map 類型

布爾類型

  1. 在Servlet中設置布爾類型的數據索引

    // 布爾類型
    request.setAttribute("flag", true);
  2. 獲取數據ci

    ```F#
    <#--
    數據類型:布爾類型
    在freemarker中布爾類型不能直接輸出;若是輸出要先轉成字符串
    方式一:?c
    方式二:?string 或 ?string("true時的文本","false時的文本")
    -->
    ${flag?c} <br>
    ${flag?string} <br>
    ${flag?string("yes","no")} <br>字符串

     

日期類型

  1. 在Servlet中設置日期類型的數據

    // 日期類型
    request.setAttribute("createDate",new Date());
  2. 獲取數據

    ```F#
    <#--
    數據類型:日期類型
    在freemarker中日期類型不能直接輸出;若是輸出要先轉成日期型或字符串

    1. 年月日 ?date
    2. 時分秒 ?time
    3. 年月日時分秒 ?datetime
    4. 指定格式 ?string("自定義格式")
      y:年 M:月 d:日
      H:時 m:分 s:秒
      -->
      <#-- 輸出日期格式 -->
      ${createDate?date} <br>
      <#-- 輸出時間格式 -->
      ${createDate?time} <br>
      <#-- 輸出日期時間格式 -->
      ${createDate?datetime} <br>
      <#-- 輸出格式化日期格式 -->
      ${createDate?string("yyyy年MM月dd日 HH:mm:ss")} <br>

數值類型

  1. 在Servlet設置數值型的數據

    // 數值類型
    request.setAttribute("age",18); // 數值型
    request.setAttribute("salary",10000); // 數值型
    request.setAttribute("avg",0.545); // 浮點型
  2. 獲取數據

    ```F#
    <#--
    數據類型:數值類型
    在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>

若有疑問,可加我私人VX[ kengwanglaoxue ],更多Java學習資料關注公衆號【樂字節】獲取

字符串類型

  1. 在Servlet中設置字符串類型的數據

    // 字符串類型
    request.setAttribute("msg","Hello ");
    request.setAttribute("msg2","freemarker");
  2. 獲取數據

    ```F#
    <#--
    數據類型:字符串類型
    在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>
      <#-- 5. 字母轉大寫輸出 ?upper_case -->
      ${msg?upper_case} <br>
      <#-- 6. 獲取字符串長度 ?length -->
      ${msg?length} <br>
      <#-- 7. 是否以指定字符開頭(boolean類型) ?starts_with("xx")?string -->
      ${msg?starts_with("H")?string} <br>
      <#-- 8. 是否以指定字符結尾(boolean類型) ?ends_with("xx")?string -->
      ${msg?ends_with("h")?string} <br>
      <#-- 9. 獲取指定字符的索引 ?index_of("xxx") -->
      ${msg?index_of("e")} <br>
      <#-- 10. 去除字符串先後空格 ?trim -->
      ${msg?trim?length} <br>
      <#-- 11. 替換指定字符串 ?replace("xx","xxx") -->
      ${msg?replace("o","a")}<br>

字符串空值狀況處理

​ 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);
  1. 獲取數據

    ```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>

     

hash 類型

  1. 在Servlet中設置hash類型的數據

    // Map操做
    Map<String,String> cityMap = new HashMap<>();
    cityMap.put("sh","上海");
    cityMap.put("bj","北京");
    cityMap.put("sz","深圳");
    request.setAttribute("cityMap",cityMap);
  2. 獲取數據

    ```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>

     

image

相關文章
相關標籤/搜索