FreeMarker
来源:互联网 发布:淘宝top api易语言sdk 编辑:程序博客网 时间:2024/06/05 09:34
【1】list、break指令
语法格式如下:
<#list sequence as item> ...</#list>
item_index:当前变量的索引值.
item_has_next:是否存在下一个对象.
示例如下:
<#list ["星期一","星期二","星期三","星期四","星期五","星期六"] as x>${x_index + 1}.${x}<#if x_has_next>,</#if><#if x="星期四"><#break></#if></#list>
输出结果如下:
1.星期一,2.星期二,3.星期三,4.兴趣四,
【2】import指令
语法格式如下:
<#import path as mapObject>
path:指定要被导入的模板文件;
mapObject:是一个Map对象。
意思:将path路径中的变量都放在mapObject中.
示例如下:
<#import "/lib/common.ftl" as com>
【3】assign指令
assign指令在前面已经使用了多次,它用于为该模板页面创建或替换一个顶层变量。
assign指令的用法有多种,包含创建或替换一个顶层变量,或者创建或替换多个变量等。
它的最简单的语法如下:
<#assign name=value [in namespacehash] />
这个用法用于指定一个名为name的变量,该变量的值为value。
此外,FreeMarker允许在使用assign指令里增加in子句, in子句用于将创建的name变量放入namespacehash命名空间中。
assign指令还有如下用法:
<#assign name1=value1 name2=value2 ... nameN=valueN [in namespacehash] />
这个语法可以同时创建或替换多个顶层变量。
此外,还有一种复杂的用法。
如果需要创建或替换的变量值是一个复杂的表达式, 则可以使用如下语法格式:
<#assign name [in namespacehash]>capture this</#assign>
在这个语法中,是指将assign指令的内容赋值给name变量.如下例子:
<#assign x> <#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"]as n> ${n} </#list> </#assign> ${x}
上面的代码将产生如下输出:
星期一 星期二 星期三 星期四 星期五 星期六 星期天
虽然assign指定了这种复杂变量值的用法,但是我们也不要滥用这种用法。
如下例子:
<#assign x>Hello ${user}!</#assign>
以上代码改为如下写法更合适:
<#assign x="Hello ${user}!"/>
【4】宏的基本用法
示例如下一:
<#macro greet><font size="+2"> Hello JOE!</font></#macro>
使用时:
<@greet></@greet>
如果没有体内容也可以用
<@greet />
可以在宏定义之后定义参数,宏参数是局部变量,只在宏定义中有效。
示例二如下:
<#macro greet person><font size="+2"> Hello ${person}!</font></#macro>
使用时:
<@greet person="emma"> and <@greet person="LEO">
输出结果如下:
<font size="+2"> Hello emma!</font><font size="+2"> Hello LEO!</font>
注意:宏的参数是FTL表达式,所以,person=emma和上面的例子中具有不同的意义,这意味着将变量emma的值传给person,这个值可能是任意一种数据类型,甚至是一个复杂的表达式。
宏可以有多个参数,使用时参数的次序是无关的,但是只能使用宏中定义的参数,并且对所有参数赋值。
示例三如下:
<#macro greet person color><font size="+2" color="${color}"> Hello ${person}!</font></#macro>
使用时:
<@greet color="black" person="emma" />正确<@greet person="emma" />错误,color没有赋值
此时,如果在定义宏时为color定义缺省值<#macro greet person color="black">
这样的话,这个使用方法就是正确的。
- freemarker
- freemarker
- FreeMarker
- FreeMarker
- freemarker
- freemarker
- freemarker
- Freemarker
- freemarker
- freemarker
- FreeMarker
- freeMarker
- freemarker
- FreeMarker
- FreeMarker
- FreeMarker
- FreeMarker
- freemarker
- Scala之函数式对象之先决条件 scala标识符 辅助构造器
- 树莓派禁止休眠设置
- computed属性和watch属性的区别之四【购物车之computed】
- Mac Navicat for Mysql插入中文失败
- css 标题文字前面加小图标,如何使它们不错位?
- FreeMarker
- Python简单图片爬虫
- C语言详解(4)控制语句的注意事项
- 探索多态和多态对象模型—单一继承&多重继承
- 【C++】第10章 对象和类 知识点总结
- 02-线性结构1 两个有序链表序列的合并(15 分)
- 第1章 引论
- bzoj3052 [wc2013]糖果公园 (树上带修改莫队)
- wget