【FreeMarker】【模板文件FTL】模板自定义指令 macro
来源:互联网 发布:淘宝怎么买qq号 编辑:程序博客网 时间:2024/06/06 23:06
自定义指令macro
自定义指令可以使用 macro 指令来定义,这是模板设计者所关心的内容。Java程序员若不想在模板中实现定义指令,而是在Java语言中实现指令的定义,这时可以使用freemarker.template.TemplateDirectiveModel类来扩展(后续章节)。
宏是有一个变量名的模板片段。你可以在模板中使用宏作为自定义指令,这样就能进行重复性的工作。
例如:
<#macro greet><font size="+2">Hello Joe!</font></#macro>
macro指令自身不打印任何内容,它只是用来创建宏变量,所以就会有一个名为greet的变量。在<#macro greet>和</#macro>之间的内容(称为宏定义体)当使用它作为指令时将会被执行。你可以在FTL标记中通过@代替#来使用自定义指令。使用变量名作为指令名。而且,自定义指令的结束标记也是需要的。
<@greet></@greet>或者<@greet/>
打印出:
<font size="+2">Hello Joe!</font>
macro参数
在macro指令中,宏名称的后面位置是用来定义变量的。
例如:
<#macro greet person><font size="+2">Hello ${person}!</font></#macro>
按如下使用这个宏:
<@greet person="Fred"/> and <@greet person="Batman"/>
打印出:
<font size="+2">Hello Fred!</font>and <font size="+2">Hello Batman!</font>
使用预定义指令时,参数的值(=号后边的值)可以是FTL表达式。
自定义指令可以有多个参数。
例如:
<#macro greet person color><font size="+2" color="${color}">Hello ${person}!</font></#macro>
按如下使用:
<@greet person="Fred" color="black"/>或<@greet color="black" person="Fred"/>
参数的顺序并不重要。
可以指定参数的默认值。
例如:
<#macro greet person color="black"><font size="+2" color="${color}">Hello ${person}!</font></#macro>
嵌套macro内容
自定义指令可以嵌套内容。
例如:
<#macro border><table border=4 cellspacing=0 cellpadding=4><tr><td><#nested></td></tr></table></#macro>
按如下使用:
<@border>The bordered text</@border>
输出:
<table border=4 cellspacing=0 cellpadding=4><tr><td>The bordered text</td></tr></table>
nested指令可以多次被调用。
例如:
<#macro do_thrice><#nested><#nested><#nested></#macro><@do_thrice>Anything.</@do_thrice>
输出:
Anything.Anything.Anything.
macro和循环变量
使用命名空间组织macro
参见命名空间一节。
0 0
- 【FreeMarker】【模板文件FTL】模板自定义指令 macro
- 【FreeMarker】【模板文件FTL】模板自定义指令 macro
- 【FreeMarker】【模板文件FTL】模板指令/标签 <#> <@>
- 【FreeMarker】【模板文件FTL】【参考文档】指令/标签
- 【FreeMarker】【模板文件FTL】基础
- 【FreeMarker】【模板文件FTL】模板数据模型,数据类型
- 【FreeMarker】【模板文件FTL】模板总体结构
- 【FreeMarker】【模板文件FTL】模板表达式
- 【FreeMarker】【模板文件FTL】模板插值 ${...}
- 【FreeMarker】【模板文件FTL】模板命名空间(模板库,import指令)
- freemarker ftl 模板
- 【FreeMarker】【模板文件FTL】模板文件中定义变量
- Struts2 FreeMarker FTL 模板文件中调用静态 java 方法
- 【FreeMarker】【模板文件FTL】【参考文档】内建函数
- 【FreeMarker】【模板文件FTL】【参考文档】特殊变量
- 【FreeMarker】【模板文件FTL】【参考文档】保留字
- eclipse对freemarker模板文件ftl文件安装可视化插件JBoss Application Development
- FreeMarker模板引擎常用指令
- Web.xml配置详解之context-param
- spring mvc使用uploadify上传
- (七)洞悉linux下的Netfilter&iptables:如何理解连接跟踪机制?【下】
- php 调试(在浏览器)方法
- JDBC加载的过程
- 【FreeMarker】【模板文件FTL】模板自定义指令 macro
- 如何在Android用FFmpeg+SDL2.0解码声音
- Android:如何实现老版优酷客户端三级环形菜单
- Mac OS升级到Yosemite后一些问题
- 创业必须的一些网站和博客导航
- MongoDB 安装
- Extern用法
- (八)洞悉linux下的Netfilter&iptables:状态防火墙
- GZIP文件格式简介