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>

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

相关推荐
Lee川2 小时前
面试通关:JWT 认证与双 Token 机制深度解析
后端·面试
想学习java初学者5 小时前
SpringBoot整合Vertx-Mqtt多租户(优化版)
java·spring boot·后端
Csvn6 小时前
Python 性能优化与 Profiling 工具
后端·python
不减20斤不改头像6 小时前
手机一句话开发贪吃蛇!TRAE SOLO 移动端 AI 编程实测
前端·后端
明月_清风7 小时前
K8s 从入门到上手:核心概念+常用工具全解析
后端·kubernetes
随风,奔跑7 小时前
Nginx
服务器·后端·nginx·web
小村儿9 小时前
给 AI Agent 装上"长期记忆":Karpathy 的 LLM Wiki 思想,我做成了工具
前端·后端·ai编程
何陋轩9 小时前
Spring AI实战指南:在Java项目中集成大语言模型
人工智能·后端·机器学习
用户83562907805110 小时前
Python 操作 PowerPoint 表格的创建与格式化
后端·python
forestqq10 小时前
基于openeuler2403sp3的容器,打包django运行环境镜像
后端·python·django