您的位置:首页 > 其它

FreeMarker模板文件的构成及大约语法详解(一)

2012-11-22 14:31 330 查看
本文重要推荐了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对之间以英文逗号","分隔.下面是一个例子:

{"语文":78, "数学":80}

Map对象的key和value都是表白式,然而key定然是字符串因而两者的联系是互补的,而非竞争的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: