freemarker常用总结(7)

2019-04-22 21:38

上面的代码将一个HTML页面模板定义成一个page指令,则可以在其他页面中如此page指令:

<#import \as com> //假设上面的模板页面名为common.ftl,导入页面 <@com.page title=\ spring j2ee

从上面的例子可以看出,使用macro和nested指令可以非常容易地实现页面装饰效果,此外,还可以在使用nested指令时,指定一个或多个循环变量,看如下代码: <#macro book>

<#nested 1> //使用book指令时指定了一个循环变量值 <#nested 2>

<@book ;x> ${x} .图书

当使用nested指令传入变量值时,在使用该自定义指令时,就需要使用一个占位符(如book指令后的;x).上面的代码输出文本如下: 1 .图书 2 .图书

在nested指令中使用循环变量时,可以使用多个循环变量,看如下代码:

<#macro repeat count>

<#list 1..count as x> //使用nested指令时指定了三个循环变量 <#nested x, x/2, x==count>

<@repeat count=4 ; c halfc last> ${c}. ${halfc}<#if last> Last! 上面的输出结果为:

1. 0.5 2. 1 3. 1.5 4. 2 Last;

return指令用于结束macro指令,一旦在macro指令中执行了return指令,则FreeMarker不会继续处理macro指令里的内容,看如下代码: <#macro book> spring <#return> j2ee <@book />

上面的代码输出:spring,而j2ee位于return指令之后,不会输出.

用户定义指令

? 宏和变换器变量是两种不同类型的用户定义指令,它们之间的区别是宏是在模板中使用macro指令定义,而变换器是在模板外由程序定义,这里只介绍宏 ? 基本用法

? 宏是和某个变量关联的模板片断,以便在模板中通过用户定义指令使用该变量,下面是一个例子: <#macro greet> ? 作为用户定义指令使用宏变量时,使用@替代FTL标记中的#

<@greet> ? 如果没有体内容,也可以使用: <@greet/> ? 参数

? 在macro指令中可以在宏变量之后定义参数,如: <#macro greet person> ? 可以这样使用这个宏变量:

<@greet person=\/> and <@greet person=\/> 输出结果是:

and ? 宏的参数是FTL表达式,所以下面的代码具有不同的意思: <@greet person=Fred/> ? 这意味着将Fred变量的值传给person参数,该值不仅是字符串,还可以是其它类型,甚至是复杂的表达式 ? 宏可以有多参数,下面是一个例子: <#macro greet person color> ? 可以这样使用该宏变量:

<@greet person=\? 其中参数的次序是无关的,因此下面是等价的: <@greet color=\? 只能使用在macro指令中定义的参数,并且对所有参数赋值,所以下面的代码是错误的:

<@greet person=\<@greet person=\? 可以在定义参数时指定缺省值,如: <#macro greet person color=\> ? 这样<@greet person=\就正确了 ? 宏的参数是局部变量,只能在宏定义中有效 ? 嵌套内容

? 用户定义指令可以有嵌套内容,使用<#nested>指令执行指令开始和结束标记之间的模板片断 ? 例子: <#macro border> <#nested> 这样使用该宏变量:


freemarker常用总结(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

Copyright © 2019-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18

× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: