SpringBoot整合Freemarker(三)

定义循环输出的宏

java 复制代码
<#macro list title items>
${title?cap_first}:
        <#list items as x>
           *${x?cap_first}
        </#list>
</#macro>

<@list items=["mouse", "elephant", "python"]  title="Animals"/>

输出结果:

Animals:

*Mouse

*Elephant

*Python

包含body 的宏

java 复制代码
<#macro repeat count>
  <#list 1..count as x>
         <#nested x, x/2, x==count>
  </#list>
</#macro>

<@repeat count=4 ; c,halfc,last>
  ${c}. ${halfc}<#if last> Last!</#if>
</@repeat> 

输出:

  1. 0.5

  2. 1

  3. 1.5

  4. 2 Last!

include关键字

语法:

java 复制代码
<#include filename options>
options包含两个属性:
encoding="GBK" 编码格式;
parse=true 是否作为ftl语法解析,默认是true,false就是以文本方式引入

例子:

sql 复制代码
/common/copyright.ftl 包含内容:
Copyright 2001-2002 ${me}
All rights reserved.  
----------------------------------------------------
<#assign me = "Juila Smith">
Some test
Yeah
<#include "/common/copyright.ftl" encoding="GBK">

Import关键字

语法:

sql 复制代码
<#import path as hash>
类似于java里的import,它导入文件,然后就可以在当前文件里使用被导入文件里的宏组件
用例
假设mylib.ftl 里定义了宏copyright 那么我们在其他模板页面里可以这样使用
<#import "/libs/mylib.ftl" as my>
<@my.copyright  date="1999-2002"/>
<#-- "my"在freemarker里被称作namespace -->	

compress关键字

语法:

java 复制代码
<#compress>
  ...
</#compress>

用来压缩空白空间和空白的行

相关推荐
王码码20353 小时前
Go语言的测试:从单元测试到集成测试
后端·golang·go·接口
王码码20354 小时前
Go语言中的测试:从单元测试到集成测试
后端·golang·go·接口
嵌入式×边缘AI:打怪升级日志4 小时前
使用JsonRPC实现前后台
前端·后端
小码哥_常5 小时前
从0到1:Spring Boot 中WebSocket实战揭秘,开启实时通信新时代
后端
lolo大魔王5 小时前
Go语言的异常处理
开发语言·后端·golang
IT_陈寒7 小时前
Python多进程共享变量那个坑,我差点没爬出来
前端·人工智能·后端
码事漫谈7 小时前
2026软考高级·系统架构设计师备考指南
后端
AI茶水间管理员9 小时前
如何让LLM稳定输出 JSON 格式结果?
前端·人工智能·后端
其实是白羊9 小时前
我用 Vibe Coding 搓了一个 IDEA 插件,复制URI 再也不用手动拼了
后端·intellij idea
用户8356290780519 小时前
Python 操作 Word 文档节与页面设置
后端·python