设为首页 加入收藏

TOP

FreeMarker教程(六)
2014-11-24 12:02:18 来源: 作者: 【 】 浏览:132
Tags:FreeMarker 教程
操作符两边必须是数字,因此下面的代码是错误的:
${3 * "5"} <#-- WRONG! -->
使用+操作符时,如果一边是数字,一边是字符串,就会自动将数字转换为字符串,例如:
${3 + "5"}
输出结果是:
35
使用内建的int(后面讲述)获得整数部分,例如:
${(x/2) int}
${1.1 int}
${1.999 int}
${-1.1 int}
${-1.999 int}
输出结果是(假设x为5):
2
1
1
-1
-1
l 比较操作符
使用=(或==,完全相等)测试两个值是否相等,使用!= 测试两个值是否不相等
=和!=两边必须是相同类型的值,否则会产生错误,例如<#if 1 = "1">会引起错误
Freemarker是精确比较,所以对"x"、"x "和"X"是不相等的
对数字和日期可以使用<、<=、>和>=,但不能用于字符串
由于Freemarker会将>解释成FTL标记的结束字符,所以对于>和>=可以使用括号来避免这种情况,例如<#if (x > y)>
另一种替代的方法是,使用lt、lte、gt和gte来替代<、<=、>和>=
l 逻辑操作符
&&(and)、||(or)、!(not),只能用于布尔值,否则会产生错误
例子:
<#if x < 12 && color = "green">
We have less than 12 things, and they are green.
<#if !hot> <#-- here hot must be a boolean -->
It's not hot.
l 内建函数
内建函数的用法类似访问散列的子变量,只是使用“ ”替代“.”,下面列出常用的一些函数
字符串使用的:
n html:对字符串进行HTML编码
n cap_first:使字符串第一个字母大写
n lower_case:将字符串转换成小写
n upper_case:将字符串转换成大写
n trim:去掉字符串前后的空白字符
序列使用的:
n size:获得序列中元素的数目
数字使用的:
n int:取得数字的整数部分(如-1.9 int的结果是-1)
例子(假设test保存字符串"Tom & Jerry"):
${test html}
${test upper_case html}
输出结果是:
Tom & Jerry
TOM & JERRY
l 操作符优先顺序
操作符组
操作符
后缀
[subvarName] [subStringRange] . (methodParams)
一元
+expr、-expr、!
内建
乘法
*、 / 、%
加法
+、-
关系
<、>、<=、>=(lt、lte、gt、gte)
相等
==(=)、!=
逻辑and
&&
逻辑or
||
数字范围
..
(4)Interpolation
l Interpolation有两种类型:
通用Interpolation:${expr}
数字Interpolation:#{expr}或#{expr; format}
l 注意:Interpolation只能用于文本部分
l 通用Interpolation
插入字符串值:直接输出表达式结果
插入数字值:根据缺省格式(由#setting指令设置)将表达式结果转换成文本输出;可以使用内建函数string格式化单个Interpolation,下面是一个例子:
<#setting number_format="currency"/>
<#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("yyyy-MM-dd HH:mm:ss zzzz")}
${lastUpdated string("EEE, MMM d, ''yy")}
${lastUpdated string("EEEE, MMMM dd, yyyy, hh:mm:ss a '('zzz')'")}
输出的结果类似下面的格式:
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", "no")}
输出结果是:
yes
l 数字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)用户定义指令
l 宏和变换器变量是两种不同类型的用户定义指令,它们之间的区别是宏是在模板中使用macro指令定义,而变换器是在模板外由程序定义,这里只介绍宏
l 基本用法
宏是和某个变
首页 上一页 3 4 5 6 下一页 尾页 6/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇freemaker的初步使用 下一篇java关于集合的遍历与增强for循环..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: