\\b;退格键(u0008) \\f;Form feed(u000C) \\l;< \\g;> \\a;& \\{;{
\\xCode;直接通过4位的16进制数来指定Unicode码,输出该unicode码对应的字符.
如果某段文本中包含大量的特殊符号,FreeMarker提供了另一种特殊格式:可以在指定字符串内容的引号前增加r标记,在r标记后的文件将会直接输出.看如下代码: ${r\${r\输出结果是: ${foo} C:\\foo\\bar 2. 数值
表达式中的数值直接输出,不需要引号.小数点使用\分隔,不能使用分组\符号.FreeMarker目前还不支持科学计数法,所以\是错误的.在FreeMarker表达式中使用数值需要注意以下几点: a)数值不能省略小数点前面的0,所以\是错误的写法 b)数值8 , +8 , 8.00都是相同的
3. 布尔值
直接使用true和false,不使用引号. 4. 集合
集合以方括号包括,各集合元素之间以英文逗号\分隔,看如下的例子:
<#list [\星期一\星期二\星期三\星期四\星期五\星期六\星期天\${x} #list> 输出结果是: 星期一 星期二 星期三 星期四 星期五 星期六 星期天
除此之外,集合元素也可以是表达式,例子如下: [2 + 2, [1, 2, 3, 4], \
还可以使用数字范围定义数字集合,如2..5等同于[2, 3, 4, 5],但是更有效率.注意,使用数字范围来定义集合时无需使用方括号,数字范围也支持反递增的数字范围,如5..2
5,Map对象
Map对象使用花括号包括,Map中的key-value对之间以英文冒号\分隔,多组key-value对之间以英文逗号\分隔.下面是一个例子: {\语文\数学\
Map对象的key和value都是表达式,但是key必须是字符串 3.2 输出变量值
FreeMarker的表达式输出变量时,这些变量可以是顶层变量,也可以是Map对象中的变量,还可以是集合中的变量,并可以使用点(.)语法来访问Java对象的属性.下面分别讨论这些情况 1. 顶层变量
所谓顶层变量就是直接放在数据模型中的值,例如有如下数据模型:
Map root = new HashMap(); //创建数据模型 root.put(\//name是一个顶层变量
对于顶层变量,直接使用${variableName}来输出变量值,变量名只能是字母,数字,下划线,$,@和#的组合,且不能以数字开头号.为了输出上面的name的值,可以使用如下语法: ${name} 2. 输出集合元素
如果需要输出集合元素,则可以根据集合元素的索引来输出集合元素,集合元素的索引以方括号指定.假设有索引:
[\星期一\星期二\星期三\星期四\星期五\星期六\星期天\该索引名为week,如果需要输出星期三,则可以使用如下语法: ${week[2]} //输出第三个集合元素
此外,FreeMarker还支持返回集合的子集合,如果需要返回集合的子集合,则可以使用如下语法:
week[3..5] //返回week集合的子集合,子集合中的元素是week集合中的第4-6个元素 3. 输出Map元素
这里的Map对象可以是直接HashMap的实例,甚至包括JavaBean实例,对于JavaBean实例而言,我们一样可以把其当成属性为key,属性值为value的Map实例.为了输出Map元素的值,可以使用点语法或方括号语法.假如有下面的数据模型: Map root = new HashMap(); Book book = new Book(); Author author = new Author(); author.setName(\author.setAddress(\book.setName(\book.setAuthor(author); root.put(\root.put(\
为了访问数据模型中名为struts2的书的作者的名字,可以使用如下语
法:
book.author.name //全部使用点语法 book[\
book.author[\//混合使用点语法和方括号语法 book[\//全部使用方括号语法
使用点语法时,变量名字有顶层变量一样的限制,但方括号语法没有该限制,因为名字可以是任意表达式的结果. 3.3字符串操作
FreeMarker的表达式对字符串操作非常灵活,可以将字符串常量和变量连接起来,也可以返回字符串的子串等. 字符串连接有两种语法:
1. 使用${..}或#{..}在字符串常量部分插入表达式的值,从而完成字符串连接.
2. 直接使用连接运算符+来连接字符串 例如有如下数据模型:
Map root = new HashMap(); root.put(\下面将user变量和常量连接起来:
${\//使用第一种语法来连接 ${\使用+号来连接
上面的输出字符串都是hello,annlee!,可以看出这两种语法的效果完全一样.