一:直接指定值。
使用直接指定值语法让freemarker直接输出插值中的值,而不是输出变量值。直接指定值可以是字符串,数值,布尔值,集合和map对象。
1,字符串。
直接指定字符串值使用单引号或双引号限定,如果字符串值中包含特殊字符需要转义,看下面的例子:
输出结果是:
我的文件保存在c:\盘。
我名字是"annlee"
freemarker支持如下转义字符:
";双引号(u0022)
';单引号(u0027)
\;反斜杠(u005c)
n;换行(u000a)
r;回车(u000d)
t;tab(u0009)
b;退格键(u0008)
f;form feed(u000c)
l;
输出结果是:
c:\foo\bar
2,数值。表达式中的数值直接输出,不需要引号。小数点使用".
"分隔,不能使用分组","符号。freemarker目前还不支持科学计数法,所以"1e3"是错误的。在freemarker表达式中使用数值需要注意以下几点:
1,数值不能省略小数点前面的0,所以".5"是错误的写法。
2,数值8 , 8 , 8.00都是相同的。
3,布尔值。
直接使用true和false,不使用引号。
4,集合。集合以方括号包括,各集合元素之间以英文逗号","分隔,看如下的例子:
#list ["星期一", 星期二", 星期三", 星期四", 星期五", 星期六", 星期天"] as x>
输出结果是:
星期一。星期二。
星期三。星期四。
星期五。星期六。
星期天。除此之外,集合元素也可以是表达式,例子如下:
2 + 2, [1, 2, 3, 4], whatnot"]
还可以使用数字范围定义数字集合,如2..5等同于[2, 3, 4, 5],但是更有效率。注意,使用数字范围来定义集合时无需使用方括号,数字范围也支持反递增的数字范围,如5..2
5,map对象。
map对象使用花括号包括,map中的key-value对之间以英文冒号":"分隔,多组key-value对之间以英文逗号","分隔。下面是一个例子:
"语文":78, "数学":80}
map对象的key和value都是表达式,但是key必须是字符串。
二:输出变量值。
freemarker的表达式输出变量时,这些变量可以是顶层变量,也可以是map对象中的变量,还可以是集合中的变量,并可以使用点(.)语法来访问j**a对象的属性。下面分别讨论这些情况。
1,顶层变量。
所谓顶层变量就是直接放在数据模型中的值,例如有如下数据模型:
map root = new hashmap();创建数据模型。
name","annlee");name是一个顶层变量。
对于顶层变量,直接使用$来输出变量值,变量名只能是字母,数字,下划线,$,和#的组合,且不能以数字开头号。为了输出上面的name的值,可以使用如下语法:
2,输出集合元素。
如果需要输出集合元素,则可以根据集合元素的索引来输出集合元素,集合元素的索引以方括号指定。假设有索引:
"星期一","星期二","星期三","星期四","星期五","星期六","星期天"].该索引名为week,如果需要输出星期三,则可以使用如下语法:
//输出第三个集合元素。
此外,freemarker还支持返回集合的子集合,如果需要返回集合的子集合,则可以使用如下语法:
week[3..5] /返回week集合的子集合,子集合中的元素是week集合中的第4-6个元素。
3,输出map元素。
这里的map对象可以是直接hashmap的实例,甚至包括j**abean实例,对于j**abean实例而言,我们一样可以把其当成属性为key,属性值为value的map实例。为了输出map元素的值,可以使用点语法或方括号语法。假如有下面的数据模型:
map root = new hashmap();
book book = new book();
author author = new author();
annlee");
gz");struts2");
info","struts");
book", book);
为了访问数据模型中名为struts2的书的作者的名字,可以使用如下语法:
//全部使用点语法。
book["author"].name
name"] 混合使用点语法和方括号语法。
book["author"][name"] 全部使用方括号语法。
使用点语法时,变量名字有顶层变量一样的限制,但方括号语法没有该限制,因为名字可以是任意表达式的结果。
3.3, 字符串操作。
freemarker的表达式对字符串操作非常灵活,可以将字符串常量和变量连接起来,也可以返回字符串的子串等。
字符串连接有两种语法:
1,使用$或#在字符串常量部分插入表达式的值,从而完成字符串连接。
2,直接使用连接运算符+来连接字符串。
例如有如下数据模型:
map root = new hashmap();user","annlee");
下面将user变量和常量连接起来:
!"}使用第一种语法来连接。
只能用于文本部分,不能用于表达式,下面的**是错误的:
#if $>wow!
#if "$wow!
应该写成:<#if isbig>wow!
截取子串可以根据字符串的索引来进行,截取子串时如果只指定了一个索引值,则用于取得字符串中指定索引所对应的字符;如果指定两个索引值,则返回两个索引中间的字符串子串。假如有如下数据模型:
map root = new hashmap();book","struts2,freemarker");
可以通过如下语法来截取子串:
$ /结果是su
//结果是tru
freemarker常见语法大全
freemarker的插值有如下两种类型 1,通用插值 2,数字格式化插值 或 用于判断如果存在,就输出这个值。默认值xxx 日期格式。yes 大小比较符号使用需要注意 xml的原因 可以用于比较数字和日期。使用lt lte gt和gte来替代 和 也可以使用括号 if x y 内置函数 调用区别于...
freemarker常见语法大全
elseif condition3 else boolean类型的空值判断 空值判断可以写成 if 注意 为变量的渲染显示,而 为定义等操作符的定义。switch switch value case refvalue1 break case refvalue2 break case refvalue...
英语基本语法
语法。一 词类。1 名词 noun n.表示人或事物的名称 名词不能随便跑出来 如pen apple dog等。2 冠词 article art.用于名词前,帮助说明名词所指的人或事物,包括a an the.3 代词 pronoun pron.用于代替名词以及名词作用的短语 分句或句子等。如we t...