assign指令
使用方法
<#assign name1=value1 name2=value2 ... nameN=valueN>
或
<#assign same as above... in namespacehash>
或
<#assign name>
capture this
</#assign>
或
<#assign name in namespacehash>
capture this
</#assign>
-
name:變量名。 -
=:賦值操作符。 它也可以是一個簡寫的賦值操作符(從 FreeMarker 2.3.23 版本開始):++,--,+=,-=,*=,/=或%=。比如<#assign x++>和<#assign x = x + 1>是一樣的,并且<#assign x += 2>和<#assign x = x + 2>是相同的。 請注意,++通常意味著算術(shù)加法 (對于非數(shù)字將會失敗),不像+或+=可以進行字符連接等重載操作。 -
value: 存儲的值。是表達式。 -
namespacehash:(通過 [import] 為命名空間創(chuàng)建的哈希表。是表達式。
舉例
- 1、定義簡單類型
<#assign name="李四">
姓名:${name}
- 2、定義對象類型
<#assign info={"name":"張三","address":"上海"}>
姓名:${info.name}
地址:${info.address}
描述
使用該指令你可以創(chuàng)建一個新的變量, 或者替換一個已經(jīng)存在的變量。
比如:變量 seq 存儲一個序列:
<#assign seq = ["foo", "bar", "baz"]>
比如:變量 x 中存儲增長的數(shù)字:
<#assign x++>
可以使用一個 assign 標記來定義定義多個變量
<#assign
seq = ["foo", "bar", "baz"]
x++
>
assign 的極端使用是當(dāng)它捕捉它的開始標記和結(jié)束標記中間生成的輸出時。 也就是說,在標記之間打印的東西將不會在頁面上顯示, 但是會存儲在變量中。比如:
<#macro myMacro>foo</#macro>
<#assign x>
<#list 1..3 as n>
${n} <@myMacro />
</#list>
</#assign>
Number of words: ${x?word_list?size}
${x}
將會輸出:
Number of words: 6
1 foo
2 foo
3 foo
不可以使用它來往字符串中插入變量:
<#assign x>Hello ${user}!</#assign> <#-- 錯誤 -->
你可以這么來寫:
<#assign x="Hello ${user}!">