常用Freemark語法(二)
阿新 • • 發佈:2018-12-14
配置
<#-- Use UTF-8 charset for URL escaping from now: -->
<#setting url_escaping_charset="UTF-8">
賦值
<#assign seq = ["foo", "bar", "baz"]>
<#assign n= 1>
<#assign x++>
<#assign x="Hello ${user}!">
bool值
<#-- 輸出 true: --> ${foo?c} <#assign foo = true> <#-- 輸出 Y: --> ${foo?then('Y', 'N')} <#assign foo = false> <#-- 輸出 N: --> ${foo?then('Y', 'N')} <#assign x = 10> <#assign y = 20> <#-- 輸出x、y中較大的: --> ${(x > y)?then(x, y)}
數字型別
<#assign a = 2378492>
${a} -- 2,378,492
${a?c} -- 2378492
<#assign a =2.79>
?floor=${a?floor} -- 2
?ceiling=${a?ceiling} -- 3
?round=${a?round} -- 3
?round=${a?is_nan} -- false
?round=${a?is_infinite} -- false
字串處理
${string?html} html encode處理 ${string?length} 字串長度 ${string?replace(a,b)} 替換a為b ${string?js_string} 轉義' " ${string?url} 進行url轉義處理 ${string?url_path} 進行url轉義處理,但是不轉義 / ...
雜湊表處理
<#assign h = {"name":"mouse", "price":50}>
<#assign keys = h?keys>
<#list keys as key>${key} = ${h[key]}; </#list>
邏輯與比較運算
邏輯運算:||
&&
!
比較運算 ==
!=
>
<
>=
<=
gt
lt
gte
lte
(g: greater、t: than、e: equal、l: less)
FreeMarker進行的是精確的比較,= 或 != 兩邊的表示式的結果都必須是標量,而且兩個標量都必須是相同型別
實際邏輯:
a > 0 && c < 0 || d <= 0 && b >=0
為避免Freemark對 > < 解釋為標籤可作如下替換
a gt 0 && c lt 0 || d lte 0 && b gte 0