收藏 分享(赏)

FreeMarker模板文件的组成及基本语法详解.txt

上传人:hskm5268 文档编号:4000715 上传时间:2018-12-03 格式:TXT 页数:7 大小:10.99KB
下载 相关 举报
FreeMarker模板文件的组成及基本语法详解.txt_第1页
第1页 / 共7页
FreeMarker模板文件的组成及基本语法详解.txt_第2页
第2页 / 共7页
FreeMarker模板文件的组成及基本语法详解.txt_第3页
第3页 / 共7页
FreeMarker模板文件的组成及基本语法详解.txt_第4页
第4页 / 共7页
FreeMarker模板文件的组成及基本语法详解.txt_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、本文主要介绍了FreeMarker模板文件有几部分组成?以及FreeMarker的一些基本语法知识.FreeMarker模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成:1. 文本:直接输出的部分2. 注释:格式部分,不会输出3. 插值:即$.或#.格式的部分,将使用数据模型中的部分替代输出4. FTL指令:FreeMarker指定,和HTML标记类似,名字前加#予以区分,不会输出下面是一个FreeMarker模板的例子,包含了以上所说的4个部分Welcome!Welcome $user !We have these animals:$being.name

2、 for $being.price Euros1. FTL指令规则在FreeMarker中,使用FTL标签来使用指令,FreeMarker有3种FTL标签,这和HTML标签是完全类似的.1,开始标签:2,结束标签:3,空标签:实际上,使用标签时前面的符号#也可能变成,如果该指令是一个用户指令而不是系统内建指令时,应将#符号改成符号.使用FTL标签时,应该有正确的嵌套,而不是交叉使用,这和XML标签的用法完全一样.如果全用不存在的指令,FreeMarker不会使用模板输出,而是产生一个 .FreeMarker会 FTL标签中的空 字符.值 注 的是 和指令 不 有空 字符.2.插值规则FreeM

3、arker的插值有如下 种类型:1, 用插值$expr;2,数字格式 插值:#expr或#expr;format2.1 用插值用插值, 可以分 以下4种 :1,插值结果 字符 值:直接输出 式结果2,插值结果 数字值: 据 格式(由#setting指令 )将 式结果 成文本输出.可以使用内建的字符 数格式 个插值,如下面的例子:$answer$answer?string $answer?string.number$answer?string.currency$answer?string.percent$answer输出结果是:$42.00$42.0042$42.004,200%3,插值结果 值

4、: 据 格式(由#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 TimeTue, Apr 8, 03Tuesday, April 08, 2003, 08:08:08 PM (

5、PDT)4,插值结果 值: 据 格式(由#setting指令 )将 式结果 成文本输出.可以使用内建的字符 数格式 个插值,如下面的例子:$foo?string(“yes“, “no“)输出结果是:yes2.2 数字格式 插值数字格式 插值可用#expr;format式来格式 数字,currency1中format可以是:mX:数部分“XMX:数部分“X如下面的例子:#x; M2 #y; M2 #x; m2 #y; m2 #x; m1M2 #x; m1M2 3, 式式是FreeMarker模板的fifl能, 式 在插值语法$ 中时, 要输出 式的值; 式语法也可FreeMarker标签结,用

6、输出.实际上FreeMarker的 式fl能,”不直接指定值,输出变 值,也字符 格式 输出和 fl能.3.1 直接指定值使用直接指定值语法FreeMarker直接输出插值中的值,而不是输出变 值.直接指定值可以是字符 ,数值,值,和MAP .1,字符 直接指定字符 值使用号或号定,如果字符 值中包含 字符要 ,下面的例子:$“ 的文件存在C:“$ 名字是“annlee“输出结果是: 的文件存在C:名字是“annlee“FreeMarker如下 字符:“;号(u0022);号(u0027); (u005C)n; (u000A)r; (u000D)t;Tab(u0009)b; 格 (u0008)

7、f;Form feed(u000C)l;a;xCode;直接 4的16 数来指定Unicode ,输出该unicode 应的字符.如果 文本中包含 的 符号,FreeMarker 了 一种 格式:可以在指定字符 内 的号前加r标记,在r标记的文件将会直接输出.如下代 :$r“$foo“$r“C:foobar“输出结果是:$fooC:foobar2,数值式中的数值直接输出,不要号.数 使用“.“分,不能使用分组“,“符号.FreeMarker 前 不 数法,所以“1E3“是 的.在FreeMarker 式中使用数值要注 以下几 :1,数值不能 数 前面的0,所以“.5“是 的法2,数值8 , +

8、8 , 8.00是 的3,值直接使用true和false,不使用号.4,以 号包 , 以 文 号“,“分,如下的例子:$x输出结果是:一 , 也可以是 式,例子如下:2 + 2, 1, 2, 3, 4, “whatnot“可以使用数字 围定数字,如25 2, 3, 4, 5,但是更有效率.注 ,使用数字 围来定时无使用 号,数字 围也递 的数字 围,如525,Map Map 使用花 号包 ,Map中的key-value 以 文冒号“:“分,多组key-value 以 文号“,“分.下面是一个例子:“语文“:78, “数 “:80Map 的key和value是 式,但是key必须是字符 3.2

9、输出变 值FreeMarker的 式输出变 时,这些变 可以是顶层变 ,也可以是Map 中的变 , 可以是中的变 ,并可以使用 (.)语法来 Java 的属性.下面分别讨论这些 1,顶层变 所谓顶层变 就是直接 在数据模型中的值,例如有如下数据模型:Map root = new HashMap(); /创建数据模型root.put(“name“,“annlee“); /name是一个顶层变 顶层变 ,直接使用$variableName来输出变 值,变 名只能是字母,数字,下划线,$,和#的组,且不能以数字开头号. 了输出上面的name的值,可以使用如下语法:$name2,输出 如果要输出 ,则

10、可以 据 的索来输出 , 的索以 号指定.假 有索:“一“,“ “,“ “,“,“,“,“.该索名 week,如果要输出 ,则可以使用如下语法:$week2 /输出第 个 ,FreeMarker 返 的子,如果要返 的子,则可以使用如下语法:week35 /返 week的子,子中的 是week中的第4-6个 3,输出Map 这里的Map 可以是直接HashMap的实例,甚至包 JavaBean实例, JavaBean实例而言, 们一样可以把currency1当成属性 key,属性值 value的Map实例. 了输出Map 的值,可以使用 语法或 号语法.假如有下面的数据模型:Map root

11、= new HashMap();Book book = new Book();Author author = new Author();author.setName(“annlee“);author.setAddress(“gz“);book.setName(“struts2“);book.setAuthor(author);root.put(“info“,“struts“);root.put(“book“, book);了 数据模型中名 struts2的书的作者的名字,可以使用如下语法:book.author.name /全部使用 语法book“author“.namebook.author

12、“name“ /混使用 语法和 号语法book“author“name“ /全部使用 号语法使用 语法时,变 名字有顶层变 一样的,但 号语法没有该,因 名字可以是任 式的结果.3.3, 字符 操作FreeMarker的 式 字符 操作灵活,可以将字符 和变 连接起来,也可以返 字符 的子 .字符 连接有 种语法:1,使用$或#在字符 部分插入 式的值,从而完成字符 连接.2,直接使用连接运算符+来连接字符 例如有如下数据模型:Map root = new HashMap(); root.put(“user“,“annlee“);下面将user变 和 连接起来:$“hello, $user!“

13、 /使用第一种语法来连接$“hello, “ + user + “!“ /使用+号来连接上面的输出字符 是hello,annlee!,可以出这 种语法的效果完全一样.值 注 的是,$只能用 文本部分,不能用 式,下面的代 是 的:Wow!Wow!应该成:Wow!截取子 可以 据字符 的索来 ,截取子 时如果只指定了一个索值,则用 取 字符 中指定索所 应的字符;如果指定 个索值,则返 个索中 的字符 子 .假如有如下数据模型:Map root = new HashMap(); root.put(“book“,“struts2,freemarker“);可以 如下语法来截取子 :$book0$b

14、ook4 /结果是su$book14 /结果是tru3.4 连接运算符这里所说的运算符是将 个连接成一个新的,连接的运算符是+,如下的例子:$x输出结果是:一 3.5 Map连接运算符Map 的连接运算符也是将 个Map 连接成一个新的Map ,Map 的连接运算符是+,如果 个Map 具有 的key,则右边的值替代左边的值.如下的例子:语文成绩是$scores.语文数 成绩是$scores.数 Java成绩是$scores.Java输出结果是:语文成绩是86数 成绩是87Java成绩是933.6 算术运算符FreeMarker 式中完全算术运算,FreeMarker的算术运算符包 :+, -

15、 , * , / , % 如下的代 :$ x * x - 100 $ x /2 $ 12 %10 输出结果是:-75 2.5 2在 式中使用算术运算符时要注 以下几 :1,运算符 边的运算数字必须是数字2,使用+运算符时,如果一边是数字,一边是字符 ,就会自动将数字 字符 再连接,如:$3 + “5“,结果是:35使用内建的int 数可 数值取整,如:$ (x/2)?int $ 1.1?int $ 1.999?int $ -1.1?int $ -1.999?int 结果是:2 1 1 -1 -13.7 比较运算符式中的比较运算符有如下几个:1,=或者=:判断 个值是否 .2,!=:判断 个值是

16、否不.3,或者gt:判断左边值是否 右边值4,=或者gte:判断左边值是否 右边值5,会有更好的效果,因 FreeMarker会把解释成FTL标签的结束字符,当然,也可以使用 号来避免这种 ,如:y)3.8 逻辑运算符逻辑运算符有如下几个:逻辑: Jerry TOM JERRY3.10 空值处理运算符FreeMarker 空值的处理严格,FreeMarker的变 必须有值,没有被赋值的变 就会抛出异,因 FreeMarker未赋值的变 出 可以杜绝很多潜在的 ,如缺失潜在的变 命名,或者currency1他变 .这里所说的空值,实际上也包 那些并不存在的变 , 一个Java的null值而言,

17、们 这个变 是存在的,只是”的值 null,但 FreeMarker模板而言,”无法理解null值,null值和不存在的变 完全 .了处理缺失变 ,FreeMarker 了 个运算符:!:指定缺失变 的 值?:判断 个变 是否存在currency1中,!运算符的用法有如下 种:variable!或variable!defaultValue,第一种用法不给缺失的变 指定 值, 值是空字符 ,长度 0的,或者长度 0的Map .使用!指定 值时,并不要求 值的类型和变 类型 .使用?运算符简,”总是返 一个值,用法 :variable?,如果该变 存在,返 true,否则返 false3.11 运算符的优先级FreeMarker中的运算符优先级如下(由高到低排列):1,一运算符:!2,内建 数:?3,乘 法:*, / , %4,加减法:- , +5,比较: , = , = (lt , lte , gt , gte)6, := , = , !=7,逻辑:&8,逻辑或:|9,数字 围:实际上, 们在开发 程中应该使用 号来严格区分,这样的可读性好,出 少

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 语法

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报