Freemarker Macro,Freemarker 宏参数传递详细讲解

JSON 2018-02-06 10:53:36 44329

  Freemarker  Macro 是  Freemarker  中一个亮点。自己细细去品尝。

PS:下面的Demo代码的 $符号和后面的{}都会隔开一个空格,在正常使用中,不能空开。

配置文件方式Macro 的引入

当前项目是采用配置文件引入,详细参照spring-mvc.xml 文件,下面单独摘除这一段。

<!-- 配置freeMarker 拓展-->
<bean id="freemarkerConfig"
	class="com.sojson.core.freemarker.extend.FreeMarkerConfigExtend">
	<property name="freemarkerSettings">
		<props>
			<prop key="auto_import">
				<!-- Freemarker macro 文件引用,可以多个 -->
				/common/config/top.ftl as _top,
				/common/config/left.ftl as _left 
			</prop>
		</props>
	</property>
</bean>

/common/config/top.ftl as _top 也就是把这个top.ftl 别名设置为_top ,后面的调用采用别名,top.ftl  文件内容如下:。

<#--第一个参数[name]表示这个macro的name,后面为参数,可以N个-->
<#macro name param1,param2,param3,....>
	$ {param1}
	$ {param2}
</#macro>

使用方式

<@_top.top 5,6,7/>

表示为:

<@别名.name 参数1,参数2,参数3.../>

Freemarker 方式引入

首先定义一个macro ,文件名称为macro1.ftl ,在当前项目下可以看到,代码如下。

<#--测试宏 1-->
<#macro demo1 color,name> 
<font size="+2" color="$ {color}">Hello $ {name}!</font> 
</#macro> 


<#--测试宏 2-->
<#macro copyright date> 
<p>Copyright (C) $ {date} SOJSON.COM. All rights reserved. 
<br>Email: $ {mail}</p> 
</#macro> 
<#--作用域变量-->
<#assign mail = "i@itboy.net"> 

引入

在你想要使用的  Freemarker  文件内引入。

<#--引入,macroDemo为别名-->
<#import "macro1.ftl" as macroDemo/>
<#--调用-->
<@macroDemo.demo1 'red','德玛西亚'/>
<#--调用内部变量-->
$ {macroDemo.email}

结果输出

Hello 德玛西亚!

i@itboy.net

当前项目是采用第一种方式,目录在/shiro_ssm_ehcache/src/main/webapp/WEB-INF/ftl/common/config/*下,本项目的使用参考下图:



版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/217.html

转载时必须以链接形式注明原始出处及本声明。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
Linux 安装 Redis 详细步骤讲解
Maven的Mirror和Repository 的详细讲解
PHP用户定义函数详细讲解
document.domain解决跨域问题,详细讲解
PHP用户定义函数详细讲解
Golang 常见设计模式——装饰模式详细讲解
TCP 和 UDP协议详细讲解,优缺点分析讲解
JavaScript对象详细剖析
JavaScript对象详细剖析
SEO 之 SpringMVC redirect 301,301和302区别详细讲解
最新文章
文件上传漏洞与防御 4058
前端构建工具选型指南:Webpack、Vite、Rollup、esbuild 深度对比 1444
物联网时代2026年时序数据库选型指南 1151
SaaS行业面临AI挑战:从“无限复用”到“灵活适应” 1269
神经网络:从构造到模型训练全链路解析 1168
一文吃透 Redis 核心存储结构:ziplist、listpack 与哈希表扩容 / 并发查询 1593
Linux sudo提权完整指南:从基础用法到生产级安全配置 691
XSS 和 CSRF 的本质区别及开发防御全解析 772
JVM垃圾回收(GC)全维度解析:从原理到调优实战 813
Linux动静态库与ELF加载全解析:从实操制作到底层原理 912
最热文章
免费天气API,天气JSON API,不限次数获取十五天的天气预报 783114
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 711464
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 679993
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 562673
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 512621
Elasticsearch教程(四) elasticsearch head 插件安装和使用 484794
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 302947
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 247433
Elasticsearch教程(一),全程直播(小白级别) 233097
谈谈斐讯路由器劫持,你用斐讯路由器,你需要知道的事情 228329
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...