freemarker的数据类型主要包括下面几类:
字符串类型
定义字符串可以使用双引号和单引号,例如:
<#assign temp = "some text" />
或者
<#assign temp = 'some text' />
这两种形式是相等的。字符串中可以使用转义字符""。如果字符串内有大量的特殊字符,则可以在引号的前面加上一个字母r,则字符串内的所有字符都将直接输出。例如:"It's "quoted"" 或者 r"C:
awstring"
数字类型
输入不带引号的数字就可以直接指定一个数字,必须使用点作为小数的分隔符而不能是其他的分组分隔符。可以使用-或+来表明符号(+是多余的)。科学记数法暂不支持使用(1E3就是错误的),而且也不能在小数点之前不写0(.5也是错误的)。
哈希表类型
键和值成对出现并以冒号分隔,最外面使用花括号。看这个例子:
<#assign temp = {"name":"green mouse", "price":150} />
注意到名字和值都是表达式,但是用来检索的名字就必须是字符串类型的。
序列类型
指定一个序列,使用逗号来分隔其中的每个子变量,然后把整个列表放到方括号中。例如:
<#assign nums=[1,2,3,4,5,77,8,99]/>
使用list指令将序列输出,如下所示:
<#list nums as num>
${num}
</#list>
还可以采用数字范围定义了一个连续的序列,例如:
<#assign nums=12..99/>
这种方式定义的序列的内容是12到99。总之,使用数字范围也可以表示一个数字集合,如1..5等同于集合[1,2, 3, 4, 5];同样也可以用5..1来表示[5, 4, 3, 2, 1]。
时间类型
FreeMarker支持date、time、datetime三种类型,这三种类型的值无法直接指定,通常需要借助字符串的date、time、datetime三个内建函数进行转换才可以:
<#assign test1 = "2009-01-22"?date("yyyy-MM-dd") />;
<#assign test2 ="16:34:43"?time("HH:mm:ss") />
<#assign test2 = "2009-01-22 17:23:45"?datetime("yyyy-MM-dd HH:mm:ss") />
布尔类型
直接使用true或false,不使用引号。例如:<#assign temp = true />