【文章內容簡介】
。 序列n 由逗號分隔的子變量列表,由方括號限定,下面是一個例子:list [winter, spring, summer, autumn] as x${x}/list輸出的結果是:winterspringsummerautumnn 列表的項目是表達式,所以可以有下面的例子:[2 + 2, [1, 2, 3, 4], whatnot]n 可以使用數字范圍定義數字序列,例如2..5等同于[2, 3, 4, 5],但是更有效率,注意數字范圍沒有方括號n 可以定義反遞增的數字范圍,如5..2216。 散列(hash)n 由逗號分隔的鍵/值列表,由大括號限定,鍵和值之間用冒號分隔,下面是一個例子:{name:greenmouse, price:150}n 鍵和值都是表達式,但是鍵必須是字符串l 獲取變量216。 頂層變量: ${variable},變量名只能是字母、數字、下劃線、$、@和的組合,且不能以數字開頭216。 從散列中獲取數據n 可以使用點語法或方括號語法,假設有下面的數據模型:(root) | + book | | | + title = Breeding green mouses | | | + author | | | + name = Julia Smith | | | + info = Biologist, 19231985, Canada | + test = title下面都是等價的:book[author].name.[name]book[author][name]n 使用點語法,變量名字有頂層變量一樣的限制,但方括號語法沒有該限制,因為名字是任意表達式的結果216。 從序列獲得數據:和散列的方括號語法語法一樣,只是方括號中的表達式值必須是數字;注意:第一個項目的索引是0216。 序列片斷:使用[startIndex..endIndex]語法,從序列中獲得序列片斷(也是序列);startIndex和endIndex是結果為數字的表達式216。 特殊變量:FreeMarker內定義變量,l 字符串操作216。 Interpolation(或連接操作)n 可以使用${..}(或{..})在文本部分插入表達式的值,例如:${Hello ${user}!}${${user}${user}${user}${user}} n 可以使用+操作符獲得同樣的結果${Hello + user + !}${user + user + user + user}n ${..}只能用于文本部分,下面的代碼是錯誤的:if ${isBig}Wow!/ifif ${isBig}Wow!/if應該寫成:if isBigWow!/if216。 子串n 例子(假設user的值為“Big Joe”):${user[0]}${user[4]}${user[1..4]}結果是(注意第一個字符的索引是0):BJig Jl 序列操作216。 連接操作:和字符串一樣,使用+,下面是一個例子:list [Joe, Fred] + [Julia, Kate] as user ${user}/list輸出結果是: Joe Fred Julia Katel 散列操作216。 連接操作:和字符串一樣,使用+,如果具有相同的key,右邊的值替代左邊的值,例如:assign ages = {Joe:23, Fred:25} + {Joe:30, Julia:18} Joe is ${} Fred is ${} Julia is ${} 輸出結果是: Joe is 30 Fred is 25 Julia is 18 l 算術運算216。 +、-、/、%,下面是一個例子:${x * x 100}${x / 2}${12 % 10}輸出結果是(假設x為5):752 216。 操作符兩邊必須是數字,因此下面的代碼是錯誤的:${3 * 5} WRONG! 216。 使用+操作符時,如果一邊是數字,一邊是字符串,就會自動將數字轉換為字符串,例如:${3 + 5} 輸出結果是:35216。 使用內建的int(后面講述)獲得整數部分,例如:${(x/2)?int}${?int}${?int}${?int}${?int}輸出結果是(假設x為5):21111l 比較操作符216。 使用=(或==,完全相等)測試兩個值是否相等,使用!= 測試兩個值是否不相等216。 =和!=兩邊必須是相同類型的值,否則會產生錯誤,例如if 1 = 1會引起錯誤216。 Freemarker是精確比較,所以對x、x 和X是不相等的216。 對數字和日期可以使用、=、和=,但不能用于字符串216。 由于Freemarker會將解釋成FTL標記的結束字符,所以對于和=可以使用括號來避免這種情況,例如if (x y)216。 另一種替代的方法是,使用lt、lte、gt和gte來替代、=、和=l 邏輯操作符216。 amp。amp。(and)、||(or)、!(not),只能用于布爾值,否則會產生錯誤216。 例子:if x 12 amp。amp。 color = green We have less than 12 things, and they are green./ifif !hot here hot must be a boolean It39。s not hot./if l 內建函數216。 內建函數的用法類似訪問散列的子變量,只是使用“?”替代“.”,下面列出常用的一些函數216。 字符串使用的:n html:對字符串進行HTML編碼n cap_first:使字符串第一個字母大寫n lower_case:將字符串轉換成小寫n upper_case:將字符串轉換成大寫n trim:去掉字符串前后的空白字符216。 序列使用的:n size:獲得序列中元素的數目216。 數字使用的:n int:取得數字的整數部分(?int的結果是1)216。 例子(假設test保存字符串Tom amp。 Jerry):${test?html}${test?upper_case?html}輸出結果是:Tom amp。amp。 JerryTOM amp。amp。 JERRY l 操作符優(yōu)先順序操作符組操作符后綴[subvarName] [subStringRange] . (methodParams)一元+expr、expr、!內建?乘法*、 / 、%加法+、關系、=、=(lt、lte、gt、gte)相等==(=)、!=邏輯andamp。amp。邏輯or||數字范圍..(4)Interpolationl Interpolation有兩種類型:select userid count216。 通用Interpolation:${expr}216。16