本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
本博客在此声明所有文章均为转摘,只做资料收集使用。并无其他商业用途。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:210
评论数量:205
留言数量:-19
访问次数:918931
建立时间:2007年5月10日




[界面和模板语言]FreeMarker设计指南(4)
文章收藏,  网上资源,  软件技术,  电脑与网络

李小白 发表于 2007/10/31 19:35:04

4、杂项 (1)用户定义指令 l         宏和变换器变量是两种不同类型的用户定义指令,它们之间的区别是宏是在模板中使用macro指令定义,而变换器是在模板外由程序定义,这里只介绍宏 l         基本用法 Ø         宏是和某个变量关联的模板片断,以便在模板中通过用户定义指令使用该变量,下面是一个例子: <#macro greet>  <font size="+2">Hello Joe!</font></#macro>  Ø         作为用户定义指令使用宏变量时,使用@替代FTL标记中的# <@greet></@greet> Ø         如果没有体内容,也可以使用: <@greet/> l         参数 Ø         在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表达式,所以下面的代码具有不同的意思: <@greet person=Fred/> Ø         这意味着将Fred变量的值传给person参数,该值不仅是字符串,还可以是其它类型,甚至是复杂的表达式 Ø         宏可以有多参数,下面是一个例子: <#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="Fred" color="black" background="green"/><@greet person="Fred"/> Ø         可以在定义参数时指定缺省值,如: <#macro greet person color="black">  <font size="+2" color="${color}">Hello ${person}!</font></#macro>  Ø         这样<@greet person="Fred"/>就正确了 Ø         宏的参数是局部变量,只能在宏定义中有效 l         嵌套内容 Ø         用户定义指令可以有嵌套内容,使用<#nested>指令执行指令开始和结束标记之间的模板片断 Ø         例子: <#macro border>  <table border=4 cellspacing=0 cellpadding=4><tr><td>    <#nested>  </tr></td></table></#macro>  这样使用该宏变量: <@border>The bordered text</@border> 输出结果:   <table border=4 cellspacing=0 cellpadding=4><tr><td>    The bordered text  </tr></td></table>  Ø         <#nested>指令可以被多次调用,例如: <#macro do_thrice>  <#nested>  <#nested>  <#nested></#macro><@do_thrice>  Anything.</@do_thrice>  输出结果:   Anything.  Anything.  Anything.  Ø         嵌套内容可以是有效的FTL,下面是一个有些复杂的例子: <@border>  <ul>  <@do_thrice>    <li><@greet person="Joe"/>  </@do_thrice>  </ul></@border>  输出结果:


阅读全文(1364) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.207 second(s), page refreshed 144785195 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号