FreeMarker設計指南(2)

來源:互聯網
上載者:User
設計 FreeMarker設計指南(2)
2、資料模型



(1)基礎



l         在快速入門中介紹了在模板中使用的三種基本物件類型:scalars、hashes 和sequences,其實還可以有其它更多的能力:



Ø         scalars:儲存單值



Ø         hashes:充當其它對象的容器,每個都關聯一個唯一的查詢名字



Ø         sequences:充當其它對象的容器,按次序訪問



Ø         方法:通過傳遞的參數進行計算,以新對象返回結果



Ø         使用者自訂FTL標記:宏和變換器



l         通常每個變數只具有上述的一種能力,但一個變數可以具有多個上述能力,如下面的例子:



(root)



|



+- mouse = "Yerri"



     |



     +- age = 12



     |



     +- color = "brown"> 



l         mouse既是scalars又是hashes,將上面的資料模型合并到下面的模板:



${mouse}       <#-- use mouse as scalar -->



${mouse.age}   <#-- use mouse as hash -->



${mouse.color} <#-- use mouse as hash --> 



l         輸出結果是:



Yerri



12



brown 



(2)Scalar變數



l         Scalar變數儲存單值,可以是:



Ø         字串:簡單文本,在模板中使用引號(單引號或雙引號)括起



Ø         數字:在模板中直接使用數字值



Ø         日期:儲存日期/時間相關的資料,可以是日期、時間或日期-時間(Timestamp);通常情況,日期值由程式員加到資料模型中,設計者只需要顯示它們



Ø         布爾值:true或false,通常在<#if …>標記中使用



(3)hashes 、sequences和集合



l         有些變數不包含任何可顯示的內容,而是作為容器包含其它變數,者有兩種類型:



Ø         hashes:具有一個唯一的查詢名字和它包含的每個變數相關聯



Ø         sequences:使用數字和它包含的每個變數相關聯,索引值從0開始



l         集合變數通常類似sequences,除非無法訪問它的大小和不能使用索引來獲得它的子變數;集合可以看作只能由<#list …>指令使用的受限sequences



(4)方法



l         方法變數通常是基於給出的參數計算值



l         下面的例子假設程式員已經將方法變數avg放到資料模型中,用來計算數字平均值:



The average of 3 and 5 is: ${avg(3, 5)}



The average of 6 and 10 and 20 is: ${avg(6, 10, 20)}



The average of the price of python and elephant is: ${avg(animals.python.price, animals.elephant.price)}



(5)宏和變換器



l         宏和變換器變數是使用者自訂指令(自訂FTL標記),會在後面講述這些進階特性



(6)節點



l         節點變數表示為樹型結構中的一個節點,通常在XML處理中使用,會在後面的專門章節中講述




相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。