Freemarker Macro,Freemarker 宏参数传递详细讲解
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
转载时必须以链接形式注明原始出处及本声明。
如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。