【FreeMarker】四種變數的用法
FreeMarker四種變數的用法
freemarker的變數可以分為四種,分別是:(1)資料模型的變數【root中的變數】(2)模板中的變數使用【<#assign>定義的變數】(3)區域性變數【在指令中的變數】(4)迴圈變數【在迴圈中的變數】
freemarker的變數可以分為四種,分別是資料模型的變數【root中的變數】,模板中的變數使用【<#assign>定義的變數】,區域性變數【在指令中的變數】,迴圈變數【在迴圈中的變數】
資料模型的變數【root中的變數】
直接從模型中給模板傳值的變數就是資料模型的變數,它把變數的值放在一個map中,在模板中直接可以用。
模板中的變數使用【<#assign>定義的變數】 模板中的變數,是使用<#assign定義的變數,如果模板中定義的變數和模型中的變數名稱一致,不是覆蓋,而是隱藏
模型中的變數被隱藏後,可以使用.globals可以訪問模型中的變數
區域性變數【在指令中的變數】 使用local可以宣告區域性變數
迴圈變數【在迴圈中的變數】 在list迴圈中定義的變數,迴圈中的變數只在迴圈中有效,也是一種臨時的變數定義方式
|
assign
assign指令在前面已經使用了多次,它用於為該模板頁面建立或替換一個頂層變數, assign指令的用法有多種,包含建立或替換一個頂層變數,或者建立或替換多個變數等,- 它的最簡單的語法如下:
<#assign name=value [in namespacehash]>,
這個用法用於指定一個名為name的變數,該變數的值為value,
此外,FreeMarker允許在使用assign指令裡增加in子句,
in子句用於將建立的name變數放入namespacehash名稱空間中.
2. assign指令還有如下用法:
<#assign name1=value1 name2=value2 ... nameN=valueN [in namespacehash]>
這個語法可以同時建立或替換多個頂層變數,此外,還有一種複雜的用法,
如果需要建立或替換的變數值是一個複雜的表示式,則可以使用如下語法格式:
則可以使用如下語法格式:
<#assign name [in namespacehash]>capture this</#assign>,
在這個語法中,是指將assign指令的內容賦值給name變數.如下例子:
<#assign x>
<#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"]as n>
${n}
</#list>
</#assign>
${x}
上面的程式碼(${x}等價於<#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"]as n> ${n} </#list>):
輸出如下:
星期一 星期二 星期三 星期四 星期五 星期六 星期天
雖然assign指定了這種複雜變數值的用法,但是我們也不要濫用這種用法
如下例子:
<#assign x>Hello ${user}!</#assign>,
以上程式碼改為如下寫法更合適:
<#assign x="Hello ${user}!">
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------