Freemarker循環list的使用指南

一、從Freemarker循環list里的Map開始

Map是List中最常見的元素類型之一。在Freemarker中,使用Map的方法和使用單獨的對象差不多。下面我們來看一個例子:

<#list mapList as map>
    <tr>
        <td>${map.name}</td>
        <td>${map.age}</td>
        <td>${map.email}</td>
    </tr>
</#list>

這段代碼會循環輸出一個Map List類型的表格,表格中的每一行都代表一個Map對象。${map.name}、${map.age}和${map.email}代表了這個Map對象中的三個屬性。這個方式也可以用來循環輸出一個List的元素。

除了這個簡單的例子外,我們還可以使用JavaBean作為元素類型,例如:

class User {
    private String name;
    private int age;
    private String email;
    // getter & setter 略
}
<#list userList as user>
    <tr>
        <td>${user.name}</td>
        <td>${user.age}</td>
        <td>${user.email}</td>
    </tr>
</#list>

這樣就能循環輸出一個User List的表格了。

二、Freemarker循環內容

在Freemarker中,使用#list指令可以幫助我們很容易地循環輸出元素。除此之外,我們還可以通過#compress指令來去除循環輸出的空白和換行。下面是一個例子:

<#list users as user><#compress>${user.name}</#compress></#list>

這段代碼會輸出一個連續的字符串,其中包含了users列表中所有用戶的名字,而且沒有任何多餘的空格和換行。

我們也可以使用#sep指令來指定循環輸出元素之間的分隔符。例如,下面的代碼會輸出所有用戶的名字,用逗號隔開:

<#list users as user><#compress>${user.name}</#compress><#sep>, </#sep></#list>

三、Freemarker循環嵌套

循環嵌套是Freemarker中最常見的操作之一。

下面是一個例子,我們將循環輸出一個Map對象列表,這個Map裏面包含了一些其他列表對象:

<#list userGroupList as userGroup>
    <h2>${userGroup.name}</h2>
    <#list userGroup.users as user>
        <tr>
            <td>${user.name}</td>
            <td>${user.age}</td>
            <td>${user.email}</td>
        </tr>
    </#list>
</#list>

這段代碼可以循環輸出一個包含多個列表的Map對象。

四、Freemarker循環圖表

利用Freemarker循環列表,我們可以在HTML中很容易地創建圖表。首先,我們需要準備好一個二維數組,並將其綁定到參數中,代碼如下:

<#assign chartData = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]>

然後我們使用#list來循環輸出這個數組:

<table>
    <#list chartData as row>
        <tr>
            <#list row as cell>
                <td>${cell}</td>
            </#list>
        </tr>
    </#list>
</table>

這段代碼會生成一個簡單的二維表格,可以輕鬆地將其轉化為圖表。

五、Freemarker循環生成多個表格

在生成多個表格時,我們可以使用類似下面的一些代碼:

<#list tableData as table>
    <h2>${table.title}</h2>
    <table>
        <#list table.rows as row>
            <tr>
                <#list row.cells as cell>
                    <td>${cell}</td>
                </#list>
            </tr>
        </#list>
    </table>
</#list>

這段代碼循環輸出有多個不同標題的表格。使用#list指令,我們可以很容易地控制每個表格的輸出格式。

六、Freemarker循環填充空表格

有時候我們需要循環填充空表格,例如:

<table>
    <#list 0..2 as rowIdx>
        <#list 0..3 as colIdx>
            <td>&nbsp;</td>
        </#list>
    </#list>
</table>

這段代碼會輸出一個3行4列的空表格,每個單元格的內容都是空格。

七、Freemarker循環生成文本框

有時候我們還需要使用文本框來直接獲取用戶的輸入。我們可以使用下面的代碼:

<#list employees as employee>
    <tr>
        <td>${employee.name}</td>
        <td><input type="text" name="age_${employee.id}" value="${employee.age}"></td>
        <td><input type="text" name="email_${employee.id}" value="${employee.email}"></td>
    </tr>
</#list>

這樣,我們就可以循環生成多個帶有文本框的表格了。

八、Freemarker循環if

在循環中使用if條件語句可以很方便地對元素進行過濾或分類。例如,下面這個代碼會輸出所有年齡小於30歲的用戶:

<#list users as user>
    <#if user.age < 30>
        <tr>
            <td>${user.name}</td>
            <td>${user.age}</td>
            <td>${user.email}</td>
        </tr>
    </#if>
</#list>

同樣的方法我們還可以輸出年齡大於30歲的用戶,或者所有偶數年齡的用戶等等。

九、Freemarker循環map

我們前面介紹過循環輸出列表中的Map類型元素,這裡我們來看一下如果輸出一個獨立的Map對象。

<#assign user = {name: "Tom", age: 20, email: "tom@freemarker.com"}>
<#list user?keys as key>
    <tr>
        <td>${key}</td>
        <td>${user[key]}</td>
    </tr>
</#list>

這段代碼會輸出user這個Map對象中的所有鍵值對,只需要循環輸出Map的keys即可。

十、Freemarker循環導出word帶圖片

我們可以利用Freemarker在生成Word文檔的時候自動插入圖片,代碼示例如下:

<#list imgList as img>
    <img src="data:image/jpeg;base64,${img.content}" />
    <br>
</#list>

注意這裡的imgList是一個List類型的對象,其中每個對象都包含了要插入的圖片。這段代碼會自動將這些圖片循環插入Word文檔中。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/251835.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-13 17:32
下一篇 2024-12-13 17:32

相關推薦

  • wzftp的介紹與使用指南

    如果你需要進行FTP相關的文件傳輸操作,那麼wzftp是一個非常優秀的選擇。本文將從詳細介紹wzftp的特點和功能入手,幫助你更好地使用wzftp進行文件傳輸。 一、簡介 wzft…

    編程 2025-04-29
  • Tensor to List的使用

    Tensor to List是TensorFlow框架提供的一個非常有用的函數,在很多的深度學習模型中都會用到。它的主要功能是將TensorFlow中的張量(Tensor)轉換為P…

    編程 2025-04-29
  • Fixmeit Client 介紹及使用指南

    Fixmeit Client 是一款全能的編程開發工具,該工具可以根據不同的編程語言和需求幫助開發人員檢查代碼並且提供錯誤提示和建議性意見,方便快捷的幫助開發人員在開發過程中提高代…

    編程 2025-04-29
  • 如何使用Python將輸出值賦值給List

    對標題進行精確、簡明的解答:本文將從多個方面詳細介紹Python如何將輸出的值賦值給List。我們將分步驟進行探討,以便讀者更好地理解。 一、變量類型 在介紹如何將輸出的值賦值給L…

    編程 2025-04-28
  • Open h264 slic使用指南

    本文將從多個方面對Open h264 slic進行詳細闡述,包括使用方法、優缺點、常見問題等。Open h264 slic是一款基於H264視頻編碼標準的開源視頻編碼器,提供了快速…

    編程 2025-04-28
  • Python List查找用法介紹

    在Python中,list是最常用的數據結構之一。在很多場景中,我們需要對list進行查找、篩選等操作。本文將從多個方面對Python List的查找方法進行詳細的闡述,包括基本查…

    編程 2025-04-28
  • mvpautocodeplus使用指南

    該指南將介紹如何使用mvpautocodeplus快速開發MVP架構的Android應用程序,並提供該工具的代碼示例。 一、安裝mvpautocodeplus 要使用mvpauto…

    編程 2025-04-28
  • Python mmap共享使用指南

    Python的mmap模塊提供了一種將文件映射到內存中的方法,從而可以更快地進行文件和內存之間的讀寫操作。本文將以Python mmap共享為中心,從多個方面對其進行詳細的闡述和講…

    編程 2025-04-27
  • Python隨機函數random的使用指南

    本文將從多個方面對Python隨機函數random做詳細闡述,幫助讀者更好地了解和使用該函數。 一、生成隨機數 random函數生成隨機數是其最常見的用法。通過在調用random函…

    編程 2025-04-27
  • Python DataFrame轉List用法介紹

    Python中常用的數據結構之一為DataFrame,但有時需要針對特定需求將DataFrame轉為List。本文從多個方面針對Python DataFrame轉List詳細介紹。…

    編程 2025-04-27

發表回復

登錄後才能評論