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