FreeMarker學習之assign指令

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}!">
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章