本文重要推荐了FreeMarker模板文件有几局部构成?以及FreeMarker的一些大约语法知识.
FreeMarker模板文件并不比HTML版面容杂多少,FreeMarker模板文件重要由如下4个局部构成:
1. 文本:直接输出的局部
2. 注释:<#-- ... -->款式局部,不会输出
3. 插值:即${...}或#{...}款式的局部,将利用数据模型中的局部轮换输出
4. FTL号召:FreeMarker指定,和HTML符号相仿,名字前加#授予判别,不会输出
下面是一个FreeMarker模板的例子,包括了以上所说的4个局部
<html><br>
<head><br>
<title>Welcome!</title><br>
</head><br>
<body><br>
<#-- 注释局部--><br>
<#-- 下面利用插值 -->
<h1>Welcome ${user}!</h1><br>
<p>We have theseanimals:<br>
<u1><br>
<#-- 利用FTL号召 -->
<#list animals asbeing><br>
<li>${being.name} for ${being.price}Euros<br>
<#list><br>
<u1><br>
</body><br>
</html>
1. FTL号召法定
在FreeMarker中,利用FTL标签来利用号召,FreeMarker有3种FTL标签,这和HTML标签是全面相仿的.
1,开始标签:<#directivenameparameter>
2,告终标签:</#directivename>
3,空标签:<#directivename parameter/>
切实上,利用标签时前面的符号#也可能变成@,万一该号召是一个用户号召而不是系统内建号召时,应将#符号改成@符号.
利用FTL标签时,该当有准确的嵌套,而不是穿插利用,这和XML标签的用法全面一样.万一全用不存在的号召,FreeMarker不会利用模板输出,而是发生一个讹谬消息.FreeMarker会疏忽FTL标签中的空别字符.划算当心的是<, /> 和号召之间不批准有空别字符.
2.插值法定
FreeMarker的插值有如下两种种类:1,通用插值${expr};2,数字款式化插值:#{expr}或#{expr;format}
2.1 通用插值
对于通用插值,又能够分为以下4种情形:
1,插值收获为字符串值:直接输出表白式收获
2,插值收获为数字值:依据默认款式(由#setting号召设置)将表白式收获转换成文本输出.能够利用内建的字符串函数款式化个体插值,gucci香水如下面的例子:
<#settionnumber_format="currency"/>
<#assign answer=42/>
${answer}
${answer?string} <#-- the same as ${answer}-->
${answer?string.number}
${answer?string.currency}
${answer?string.percent}
${answer}
输出收获是:
$42.00
$42.00
42
$42.00
4,200%
3,插值收获为日期值:依据默认款式(由#setting号召设置)将表白式收获转换成文本输出.能够利用内建的字符串函数款式化个体插值,如下面的例子:
${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')'")}
输出收获是:
2008-04-08 08:08:08 Pacific Daylight Time
Tue, Apr 8, '03
Tuesday, April 08, 2003, 08:08:08 PM (PDT)
4,插值收获为布尔值:依据默认款式(由#setting号召设置)将表白式收获转换成文本输出.能够利用内建的字符串函数款式化个体插值,如下面的例子:
<#assign foo=true/>
${foo?string("yes", "no")}
输出收获是:
yes
2.2 数字款式化插值
数字款式化插值可批准#{expr;format}形式来款式化数字,其中format能够是:
mX:小数局部最小X位
MX:小数局部最大X位
如下面的例子:
<#assign x=2.582/>
<#assign y=4/>
#{x; M2} <#-- 输出2.58 -->
#{y; M2} <#-- 输出4 -->
#{x; m2} <#-- 输出2.6 -->
#{y; m2} <#-- 输出4.0 -->
#{x; m1M2} <#-- 输出2.58 -->
#{x; m1M2} <#-- 输出4.0 -->
3, 表白式
表白式是FreeMarker模板的中心功能,表白式放置在插值语法${}之中时,阐明必需输出表白式的值;表白式语法也可与FreeMarker标签联合,用于扼制输出.切实上FreeMarker的表白式功能极其壮大,它不但扶持直接指定值,输出变量值,也扶持字符串款式化输出和聚集拜会等功能.
3.1 直接指定值
利用直接指定值语法让FreeMarker直接输出插值中的值,而不是输出变量值.直接指定值能够是字符串,数值,布尔值,聚集和MAP对象.
1,字符串
直接指定字符串值利用单引号或双引号限量,万一字符串值中包括特异字符必需转义,看下面的例子:
${"我的文件保留在C://盘"}
${'我名字是/"annlee/"'}
输出收获是:
我的文件保留在C:/盘
我名字是"annlee"
FreeMarker扶持如下转义字符:
/";双引号(u0022)
/';单引号(u0027)
//;反斜杠(u005C)
/n;换行(u000A)
/r;回车(u000D)
/t;Tab(u0009)
/b;退格键(u0008)
/f;Form feed(u000C)
/l;<
/g;>
/a;&
/{;{
/xCode;直接穿越4位的16进制数来指定Unicode码,输出该unicode码对应的字符.
万一某段文本中包括许多的特异符号,FreeMarker供给了另一种特异款式:能够在指定字符串内容的引号前添置r符号,在r符号后的文件将会直接输出.看如下代码:
${r"${foo}"}
${r"C:/foo/bar"}
输出收获是:
${foo}
C:/foo/bar
2,数值
表白式中的数值直接输出,无须要引号.小数点利用"."分隔,不能利用分组","符号.FreeMarker现在还不扶持科学计数法,因而"1E3"是讹谬的.在FreeMarker表白式中利用数值必需当心以下几点:
1,数值不能省略小数点前面的0,因而".5"是讹谬的写法
2,数值8 , +8 , 8.00都是雷同的
3,布尔值
直接利用true和false,不利用引号.
4,聚集
聚集以方括号包括,各聚集元素之间以英文逗号","分隔,看如下的例子:
<#list ["礼拜一", "礼拜二", "礼拜三", "礼拜四", "礼拜五", "礼拜六","礼拜天"] as x>
${x}
</#list>
输出收获是:
礼拜一
礼拜二
礼拜三
礼拜四
礼拜五
礼拜六
礼拜天
除此之外,聚集元素也能够是表白式,例子如下:
[2 + 2, [1, 2, 3, 4], "whatnot"]
还能够利用数字范围定义数字聚集,如2..5雷同于[2, 3, 4,5],然而更管用率.当心,利用数字范围来定义聚集时无需利用方括号,数字范围也扶持反递增的数字范围,如5..2
5,Map对象
Map对象利用花括号包括,Map中的key-value对之间以英文冒号":"分隔,多组key-value对之间以英文逗号","分隔.下面是一个例子:
Map对象的key和value都是表白式,然而key定然是字符串因而两者的联系是互补的,而非竞争的。
{"语文":78, "数学":80}