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

发表回复

登录后才能评论