freemarker中文手册 下载本文

? 逻辑操作符

? &&(and)、||(or)、!(not),只能用于布尔值,否则会产生错误 ? 例子:

<#if x < 12 && color = \ We have less than 12 things, and they are green. <#if !hot> <#-- here hot must be a boolean --> It's not hot. ? 内建函数

? 内建函数的用法类似访问散列的子变量,只是使用“?”替代“.”,下面列出常用的一

些函数

? 字符串使用的:

? html:对字符串进行HTML编码 ? cap_first:使字符串第一个字母大写 ? lower_case:将字符串转换成小写 ? upper_case:将字符串转换成大写 ? trim:去掉字符串前后的空白字符 ? 序列使用的:

? size:获得序列中元素的数目 ? 数字使用的:

? int:取得数字的整数部分(如-1.9?int的结果是-1) ? 例子(假设test保存字符串\):

${test?html} ${test?upper_case?html} 输出结果是:

Tom & Jerry TOM & JERRY ? 操作符优先顺序

操作符组 操作符 后缀 一元 内建 乘法 加法 关系

[subvarName] [subStringRange] . (methodParams) +expr、-expr、! ?

*、 / 、% +、-

<、>、<=、>=(lt、lte、gt、gte)

相等 ==(=)、!=

逻辑and && 逻辑or

||

数字范围 ..

(4)Interpolation

? Interpolation有两种类型:

? 通用Interpolation:${expr}

? 数字Interpolation:#{expr}或#{expr; format} ? 注意:Interpolation只能用于文本部分 ? 通用Interpolation

? 插入字符串值:直接输出表达式结果

? 插入数字值:根据缺省格式(由#setting指令设置)将表达式结果转换成文本输出;可

以使用内建函数string格式化单个Interpolation,下面是一个例子:

<#setting number_format=\<#assign answer=42/> ${answer} ${answer?string} <#-- the same as ${answer} --> ${answer?string.number} ${answer?string.currency} ${answer?string.percent} 输出结果是:

42.00 42.00 42 42.00 4,200% ? 插入日期值:根据缺省格式(由#setting指令设置)将表达式结果转换成文本输出;可以使用内建函数string格式化单个Interpolation,下面是一个使用格式模式的例子:

${lastUpdated?string(\${lastUpdated?string(\${lastUpdated?string(\ 输出的结果类似下面的格式:

2003-04-08 21:24:44 Pacific Daylight Time Tue, Apr 8, '03 Tuesday, April 08, 2003, 09:24:44 PM (PDT) ? 插入布尔值:根据缺省格式(由#setting指令设置)将表达式结果转换成文本输出;可以使用内建函数string格式化单个Interpolation,下面是一个例子:

<#assign foo=true/> ${foo?string(\输出结果是:

yes ? 数字Interpolation的#{expr; format}形式可以用来格式化数字,format可以是: ? mX:小数部分最小X位 ? MX:小数部分最大X位 ? 例子:

<#-- If the language is US English the output is: --> <#assign x=2.582/> <#assign y=4/> #{x; M2} <#-- 2.58 --> #{y; M2} <#-- 4 --> #{x; m1} <#-- 2.6 --> #{y; m1} <#-- 4.0 --> #{x; m1M2} <#-- 2.58 --> #{y; m1M2} <#-- 4.0 --> FreeMarker设计指南(4)

4、杂项

(1)用户定义指令

? 宏和变换器变量是两种不同类型的用户定义指令,它们之间的区别是宏是在模板中使用

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=\