Freemarker基礎

Freemarker思想: 模型+數據=輸出html

1.建立Freemarker配置(Configuration)對象,設置配置信息(例如:設置模板加載路徑)函數

2.構造數據模型 注:Freemarker中的rootmodel數據模型是Map類型,rootmodel中能夠再存聽任何其它類型數據spa

3.構造一個數據輸出流對象,用於獲取 模板+數據 的輸出信息.net

4.經過Configuration對象獲取已經預加載的模板對象scala

5.數據模型與模板對象進行關聯(使用模型對象的process --處理  方法)orm

6.經過輸出對象輸出數據htm

數據模型類型:對象

TemplateModel接口

                 extends字符串

標量(scalar)類型

TemplateScalarModel         TemplateBooleanModel    TemplateDateModelTemplateNumberModel

標量實現類

SimpleScalarSimpleDate    SimpleNumber

容器類型(能夠包含其它數據類型)

TemplateHashModel    TemplateSequenceModel    TemplateCollectionModel

容器實現類

SimpleHash      SimpleSequenceSimpleCollection

方法變量

   經過實現方法變量接口能夠實現自定義方法,從而在FreeMarker模板中使用自定義方法

   TemplateMethodModel


extends

   TemplateMethodEx

      轉換器變量

 TemplateTransformModel

經常使用指令:

<#if  user.name=="Tom" > ... </#if>

<#list userList as user > ${user.name}... </#list>

<#include "/aaa.html"/>   <#--引入aaa.html頁面-->

${user!"Tom"}                    <#--當user不存在(爲null)時將用"Tom"字符串代替,就是指定一個默認值-->

<#if user??>...</#if>         <#--??用於判斷一個變量是否存在-->

<#macro macro_name [param1_name[=v1] param2_name[=v2]]> name: ${param1_name} ,age: ${param2_name}... </#macro>   <#--定義宏(macro)-->

<@macro_name [param1_name=v1 param2_name=v2 ... ]/> <#--使用宏(macro)-->

<#assign  var_name=value/>   <#--模板中定義一個名爲var_name的變量-->

${var_name}                <#--調用一個名爲var_name的變量-->

<#include "路徑"/>      <#--會在主命名空間中建立被引入模板中定義的變量-->

<#import "路徑" as alias/>  <#--會在建立一個與被引入模板對應的命名空間,在對應的命名空間中建立被引入模板中定義的變量, 所以不可以在主命名空間中直接使用引入模板中定義的變量,須要使用其alias調用.例如:${alias.var_1}-->

<@alias.macro_1 [param1_name=v1 param2_name=v2 ... ]/>  <#--在主命名空間中調用被引入的模板中定義的宏-->

注意:指令與插值中支持算數運算

模板組成:

1.文本

2.FTL tags標籤  如:<@print   ... >...</@print>,<#if  ../>...</#if>等

3.Interpolation 插值: 這部分的輸出會被計算的值來替換。插值由${和}所分隔(或者#{和},這種風格已經不建議再使用了)。

4.Comments註釋: <#-- ... -->

注意:FTL標籤名,插值${...}區分大小寫

內建函數:

使用 "變量?函數名" 的形式調用

1.用於字符處理的內建函數:

html:將字符串中全部特殊的HTML字符使用&形式替換.例如:&lt;

cap_first:字符串的第一個字母變爲大寫形式

lower_case:字符串的小寫形式

upper_case:字符串的大寫形式

trim:去掉字符串首尾的空格

2.序列使用的內建函數:

size:序列中元素的個數

3.數字使用的內建函數:

int:數字的整數部分(好比-1.9?int就是-1)

相關文章
相關標籤/搜索