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>
是相同的。 請注意,++
通常意味着算術加法 (對於非數字將會失敗),不像+
或+=
可以進行字符連接等重載操作。 -
value
: 存儲的值。是表達式。 -
namespacehash
:(通過 [import
] 爲命名空間創建的哈希表。是表達式。
舉例
- 1、定義簡單類型
<#assign name="李四">
姓名:${name}
- 2、定義對象類型
<#assign info={"name":"張三","address":"上海"}>
姓名:${info.name}
地址:${info.address}
描述
使用該指令你可以創建一個新的變量, 或者替換一個已經存在的變量。
比如:變量 seq
存儲一個序列:
<#assign seq = ["foo", "bar", "baz"]>
比如:變量 x
中存儲增長的數字:
<#assign x++>
可以使用一個 assign
標記來定義定義多個變量
<#assign
seq = ["foo", "bar", "baz"]
x++
>
assign
的極端使用是當它捕捉它的開始標記和結束標記中間生成的輸出時。 也就是說,在標記之間打印的東西將不會在頁面上顯示, 但是會存儲在變量中。比如:
<#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}!">