FreeMarkermacro宏的使用Word下载.docx

上传人:b****4 文档编号:14328735 上传时间:2022-10-22 格式:DOCX 页数:8 大小:39.09KB
下载 相关 举报
FreeMarkermacro宏的使用Word下载.docx_第1页
第1页 / 共8页
FreeMarkermacro宏的使用Word下载.docx_第2页
第2页 / 共8页
FreeMarkermacro宏的使用Word下载.docx_第3页
第3页 / 共8页
FreeMarkermacro宏的使用Word下载.docx_第4页
第4页 / 共8页
FreeMarkermacro宏的使用Word下载.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

FreeMarkermacro宏的使用Word下载.docx

《FreeMarkermacro宏的使用Word下载.docx》由会员分享,可在线阅读,更多相关《FreeMarkermacro宏的使用Word下载.docx(8页珍藏版)》请在冰豆网上搜索。

FreeMarkermacro宏的使用Word下载.docx

${title}<

/title>

如果不在freemarker.properties里定义,可以在每个文件里包含这个ftl:

#import"

/WEB-INF/template/common/common.ftl"

asc>

不同的场合有不同的运用。

使用得好的话,将会大大节省你的开发时间。

 

macro,nested,return

语法

#macronameparam1param2...paramN>

...

#nestedloopvar1,loopvar2,...,loopvarN>

#return>

/#macro>

用例

#macrotestfoobar="

Bar"

baaz=-1>

Testtext,andtheparams:

${foo},${bar},${baaz}

@testfoo="

a"

bar="

b"

baaz=5*5-2/>

/>

输出

a,b,23

a,b,-1

a,Bar,23

a,Bar,-1

定义循环输出的宏

#macrolisttitleitems>

p>

${title?

cap_first}:

ul>

#listitemsasx>

li>

${x?

cap_first}

/#list>

/ul>

@listitems=["

mouse"

"

elephant"

python"

]title="

Animals"

输出结果

Animals:

Mouse

Elephant

Python

包含body的宏

#macrorepeatcount>

#list1..countasx>

#nestedx,x/2,x==count>

@repeatcount=4;

chalfclast>

${c}.${halfc}<

#iflast>

Last!

/#if>

/@repeat>

1.0.5

2.1

3.1.5

4.2Last!

--------------------------------------------------------------------------------

注意在使用的时候:

别忘了双引号。

/pagelibs/book.ftl"

asbook>

@workorder.pricevalue="

${book.price}"

宏Macro

宏是在模板中使用macro指令定义

l.1基本用法

宏是和某个变量关联的模板片断,以便在模板中通过用户定义指令使用该变量,下面是一个例子:

#macrogreet>

fontsize="

+2"

>

HelloJoe!

/font>

调用宏时,与使用FreeMarker的其他指令类似,只是使用@替代FTL标记中的#。

@greet>

/@greet>

#--<

@greet/>

-->

在macro指令中可以在宏变量之后定义参数,如:

#macrogreetperson>

Hello${person}!

可以这样使用这个宏变量:

@greetperson="

Fred"

但是下面的代码具有不同的意思:

@greetperson=Fred/>

这意味着将Fred变量的值传给person参数,该值不仅是字符串,还可以是其它类型,甚至是复杂的表达式。

宏可以有多参数,下面是一个例子:

#macrogreetpersoncolor>

color="

${color}"

可以这样使用该宏变量,其中参数的次序是无关的:

black"

可以在定义参数时指定缺省值,否则,在调用宏的时候,必须对所有参数赋值:

#macrogreetpersoncolor="

注意:

宏的参数是局部变量,只能在宏定义中有效。

嵌套内容

FreeMarker的宏可以有嵌套内容,<

#nested>

指令会执行宏调用指令开始和结束标记之间的模板片断,举一个简单的例子:

#macroborder>

tableborder=4cellspacing=0cellpadding=4>

tr>

td>

/tr>

/td>

/table>

执行宏调用:

@border>

Theborderedtext<

/@border>

输出结果:

Theborderedtext<

指令可以被多次调用,每次都会执行相同的内容。

#macrodo_thrice>

@do_thrice>

Anything.<

/@do_thrice>

FMPP输出结果:

Anything.Anything.Anything.

嵌套内容可以是有效的FTL,下面是一个有些复杂的例子,我们将上面三个宏组合起来:

Joe"

宏定义中的局部变量对嵌套内容是不可见的,例如:

#localy="

test"

${y}${count}/${x}:

@repeatcount=3>

${y?

default("

?

"

)}${x?

)}${count?

)}<

test3/1:

?

test3/2:

test3/3:

在宏定义中使用循环变量

nestted指令也可以有循环变量(循环变量的含义见下节),调用宏的时候在宏指令的参数后面依次列出循环变量的名字,格式如下:

@macro_nameparamterlist;

loopvariablelist[,]>

例如:

c,halfc,last>

${c}.${halfc}<

这里count是宏的参数,c,halfc,last则为循环变量,输出结果:

1.0.52.13.1.54.2Last!

循环变量和宏标记指定的不同不会有问题,如果调用时少指定了循环变量,那么多余的值不可见。

调用时多指定了循环变量,多余的循环变量不会被创建:

c,halfc>

@repeatcount=4>

Justrepeatit...<

在模板中定义变量

在模板中定义的变量有三种类型:

plain变量:

可以在模板的任何地方访问,包括使用include指令插入的模板,使用assign指令创建和替换。

局部变量:

在宏定义体中有效,使用local指令创建和替换。

循环变量:

只能存在于指令的嵌套内容,由指令(如list)自动创建;

宏的参数是局部变量,而不是循环变量

局部变量隐藏(而不是覆盖)同名的plain变量;

循环变量隐藏同名的局部变量和plain变量,下面是一个例子:

#assignx="

plain"

${x}<

#--weseetheplainvar.here-->

@test/>

6.${x}<

#--thevalueofplainvar.wasnotchanged-->

#list["

loop"

]asx>

7.${x}<

#--nowtheloopvar.hidestheplainvar.-->

plain2"

#--replacetheplainvar,hidingdoesnotmaterhere-->

8.${x}<

#--it

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 自考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1