1. 程式人生 > >FreeMaker語法大全及示例

FreeMaker語法大全及示例

...  <#noescape>...</#noescape>  ... </#escape>
用例
主要使用在相似的字串變數輸出,比如某一個模組的所有字串輸出都必須是html安全的,這個時候就可以使用該表示式 <#escape x as x?html>  First name: ${firstName}  <#noescape>Last name: ${lastName}</#noescape>  Maiden name: ${maidenName} </#escape> 相同表示式    First name: ${firstName?html}  Last name: ${lastName }  Maiden name: ${maidenName?html}
assign
語法
<#assign name=value> or <#assign name1=value1 name2=value2 ... nameN=valueN> or <#assign same as above... in namespacehash> or <#assign name>  capture this </#assign> or <#assign name in namespacehash>  capture this </#assign>
用例
生成變數,並且給變數賦值 給seasons賦予序列值 <#assign seasons = ["winter", "spring", "summer", "autumn"]>   給變數test加1 <#assign test = test + 1>   給my namespage 賦予一個變數bgColor,下面可以通過my.bgColor來訪問這個變數 <#import "/mylib.ftl" as my> <#assign bgColor="red" in my>   將一段輸出的文字作為變數儲存在x裡 下面的陰影部分輸出的文字將被賦值給x <#assign x>  <#list 1..3 as n>     ${n} <@myMacro />  </#list> </#assign> Number of words: ${x?word_list?size} ${x}   <#assign x>Hello ${user}!</#assign>     error <#assign x=” Hello ${user}!”>         true   同時也支援中文賦值,如: <#assign 語法>  java </#assign> ${語法} 列印輸出: java
global
語法
<#global name=value> or <#global name1=value1 name2=value2 ... nameN=valueN> or <#global name>  capture this </#global>

全域性賦值語法,利用這個語法給變數賦值,那麼這個變數在所有的namespace中是可見的,如果這個變數被當前的assign語法覆蓋 如<#global x=2> <#assign x=1> 在當前頁面裡x=2將被隱藏,或者通過${.global.x}來訪問[A2]

setting
語法
<#setting name=value>
 
用來設定整個系統的一個環境

locale
number_format
boolean_format
date_format, time_format, datetime_format
time_zone
classic_compatible
用例
假如當前是匈牙利的設定,然後修改成美國
${1.2}
<#setting locale="en_US"> ${1.2} 
輸出
1,2
1.2
因為匈牙利是採用“,”作為十進位制的分隔符,美國是用“.”

C一些常用方法或注意事項
表示式轉換類
${expression}計算expression並輸出
#{ expression }數字計算#{ expression ;format}安格式輸出數字format為M和m
M表示小數點後最多的位數,m表示小數點後最少的位數如#{121.2322;m2M2}輸出121.23




數字迴圈
1..5 表示從1到5,原型number..number
對浮點取整數
${123.23?int} 輸出123
給變數預設值
${var?default(“hello world<br>”)?html}如果var is null那麼將會被hello world<br>替代

判斷物件是不是null
<#if mouse?exists>
Mouse found <#else> 也可以直接${mouse?if_exists})輸出布林形
常用格式化日期
openingTime必須是Date型,詳細檢視freemarker文件 Reference->build-in referece->build-in for date   ${openingTime?date} ${openingTime?date_time} ${openingTime?time}  
新增全域性共享變數資料模型
在程式碼裡的實現     cfg = Configuration.getDefaultConfiguration(); cfg.setSharedVariable("global", "you good"); 頁面實現可以通過global指令,具體檢視指令裡的global部分
直接呼叫java物件的方法
${object.methed(args)}   
字串處理(內建方法)
html安全輸出
“abc<table>sdfsf”?html