freemarker(4)

2019-08-29 19:55

${\

? 可以使用+操作符获得同样的结果

${\ ${user + user + user + user}

? ${..}只能用于文本部分,下面的代码是错误的:

<#if ${isBig}>Wow! <#if \

应该写成:

<#if isBig>Wow!

? 子串

? 例子(假设user的值为“Big Joe”):

${user[0]}${user[4]} ${user[1..4]}

结果是(注意第一个字符的索引是0):

BJ ig J

? 序列操作

? 连接操作:和字符串一样,使用+,下面是一个例子:

<#list [\ - ${user}

输出结果是:

- Joe - Fred - Julia - Kate

? 散列操作

? 连接操作:和字符串一样,使用+,如果具有相同的key,右边的值替

代左边的值,例如:

<#assign ages = {\, \\, \ - Joe is ${ages.Joe} - Fred is ${ages.Fred} - Julia is ${ages.Julia}

输出结果是:

- Joe is 30 - Fred is 25 - Julia is 18

? 算术运算

? +、-、×、/、%,下面是一个例子:

${x * x - 100} ${x / 2} ${12 % 10}

输出结果是(假设x为5):

-75 2.5 2

? 操作符两边必须是数字,因此下面的代码是错误的:

${3 * \

? 使用+操作符时,如果一边是数字,一边是字符串,就会自动将数字转

换为字符串,例如:

${3 + \

输出结果是:

35

? 使用内建的int(后面讲述)获得整数部分,例如:

${(x/2)?int} ${1.1?int} ${1.999?int} ${-1.1?int} ${-1.999?int}

输出结果是(假设x为5):

2 1 1 -1 -1

? 比较操作符

? 使用=(或==,完全相等)测试两个值是否相等,使用!= 测试两个值是

否不相等

? =和!=两边必须是相同类型的值,否则会产生错误,例如<#if 1 = \

会引起错误

? Freemarker是精确比较,所以对\、\和\是不相等的 ? 对数字和日期可以使用<、<=、>和>=,但不能用于字符串

? 由于Freemarker会将>解释成FTL标记的结束字符,所以对于>和>=可

以使用括号来避免这种情况,例如<#if (x > y)>

? 另一种替代的方法是,使用lt、lte、gt和gte来替代<、<=、>和>= ? 逻辑操作符

? &&(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 -->

4、杂项

(1)用户定义指令


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

下一篇:全国计算机一级考试复习资料 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

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