Freemark--Template Engine

Freemark--What is Freemark?


​ FreeMark是一套模板引擎,也就是一套用過提供==數據模型==和==HTML模板==生成動態頁面的通用工具。html

--requestjava

​ --template + Freemark-dataService程序員

​ --HTML服務器

--response函數

​ 既Freemark經過提供的==模板==+==數據模型==動態生成HTML界面返回給用戶的一套引擎工具。他會在WEB服務器響應response用戶請求request的時候經過部署在WEB服務器上的模板動態的生成不一樣的界面返回。這裏的數據模型經常是java對象。工具

Base Grammar--How to use freemark in program?


​ Freemark有一套本身的基礎語法(大致上和HTML類似),經過基礎語法能夠迅速的生成不一樣的界面。ui

​ 在平常的開發中只要掌握簡易的Freemark語法加上一點HTML基礎就能迅速的入手開發。code

${......}:FreeMarker將會輸出真實的值來替換大括號內的表達式,這樣的表達式被稱爲interpolation(插值).htm

註解:註釋和HTML的註釋也很類似,可是它們使用<#-- and -->來標識。不像HTML註釋那樣,FTL註釋不會出如今輸出中(不出如今訪問者的頁面中),由於FreeMarker會跳過它們。對象

FTL標籤:FreeMarker模板的語言標籤。FTL標籤和HTML標籤有一些類似之處,可是它們是FreeMarker的指令,是不會在輸出中打印的。這些標籤的名字以==#==開頭。

(用戶自定義的FTL標籤則須要使用@來代替#)

給出幾個經常使用的指令,其他指令在開發須要時查詢便可

<#if condition>...
      <#elseif condition2>...
      <#elseif condition3>...
      <#else>...
      </#if>
<#include>...
  </#include>
<#import "/lib/common.ftl" as com>
<#switch value> 
  <#case refValue>...<#break> 
  <#case refValue>...<#break> 
  <#default>... 
  </#switch>
<#list>...
      </#list>

Inner function--Advanced tutorials


​ 就像是java中方法同樣,內建函數一般爲咱們開發WEB程序提供便利。它們並非數據模型中的東西,是FreeMarker在數值上添加的。爲了清晰子變量是哪部分,==使用?代替==,.(點)來訪問它們。

  • [x] html 若是在 <#list animals as animal> ... </#list> animal?index給出了在animals中基於0開始的animal的索引值 animal?counter也像index,可是給出的是基於1的索引值 animal?item_parity基於當前計數的奇偶性,給出字符串「odd」或「even」。在給不一樣行着色時很是有用,好比: <td class="${animal?item_parity}Row">

    內建函數多種多樣,並不一一列舉,只舉出幾個經常使用的

cap_first:使字符串第一個字母大寫

lower_case:將字符串轉換成小寫

upper_case:將字符串轉換成大寫

trim:去掉字符串先後的空白字符

exists:判斷對象是否是null

也能夠直接${mouse?if_exists})

${openingTime?date} ${openingTime?date_time} ${openingTime?time}

輸出布爾形 經常使用格式化日期 openingTime必須是Date型,詳細查看freemarker文檔 Reference->build-in referece->build-in for date

​ 其他開發用到的時候在去查詢便可,值得一提的是== 空值 ==

​ 數據模型中常常會有可選的變量(有時並不存在)。除了一些人爲緣由致使失誤外,FreeMarker不能引用不存在的變量,除非明確地告訴它當變量不存在時如何處理,以下兩種典型的處理方法:

  1. 這部分對程序員而言:一個不存在的變量和一個是null值的變量
  2. 對於FreeMarker來講是同樣的,因此這裏所指的「丟失」包含這兩種狀況。
  3. 在哪裏引用變量,均可以指定一個默認值來避免變量丟失這種狀況,經過在變量名後面跟着一個==!==和==默認值==。
<h1>Welcome ${user!"visitor"}!</h1>

​ 這個例子,當user不存在於數據模型時,模板將會將user的值表示爲字符串 「visitor」。(當 user 存在時,模板就會表現出 ${user} 的值)

! 空值的語法:

  1. variable!
  2. variable!defaultValue

​第一種用法不給缺失的變量指定默認值,代表默認值是空字符串,長度爲0的集合,或者長度爲0的Map對象.

相關文章
相關標籤/搜索