日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FreeMarker四种变量的用法

發布時間:2024/9/30 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FreeMarker四种变量的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文:http://www.656463.com/article/286

摘要: freemarker的變量可以分為四種,分別是數據模型的變量【root中的變量】,模板中的變量使用【<#assign>定義的變量】,局部變量【在指令中的變量】,循環變量【在循環中的變量】

freemarker的變量可以分為四種,分別是數據模型的變量【root中的變量】,模板中的變量使用【<#assign>定義的變量】,局部變量【在指令中的變量】,循環變量【在循環中的變量】


數據模型的變量【root中的變量】

直接從模型中給模板傳值的變量就是數據模型的變量,它把變量的值放在一個map中,在模板中直接可以用。

@Test

public?void?test10() {

? ?root.put("username","張三");

? ?fu.print("10.ftl",root);

}

${username}

張三


模板中的變量使用【<#assign>定義的變量】

模板中的變量,是使用<#assign定義的變量,如果模板中定義的變量和模型中的變量名稱一致,不是覆蓋,而是隱藏

<#assign?username="李四">

<#--此時模板中的變量的名稱和模型中的變量名稱一致,不是覆蓋,而是隱藏-->

${username}

李四

模型中的變量被隱藏后,可以使用.globals可以訪問模型中的變量

<#--使用.globals可以訪問模型中的變量-->

${.globals.username}

張三


局部變量【在指令中的變量】

使用local可以聲明局部變量

<#macro test>

? ?<#--

? ?此時當調用該指令之后,會將模板中的變量username覆蓋為王五

? ?所以這種方式存在風險,所以一般不使用這種方式在指令中定義變量

? ?-->

? ?<#--<#assign ?username="王五"/>-->

? ?<#--使用local可以聲明局部變量,所以在marco中非特殊使用局部變量-->

? ?<#local ?username="王五"/>

? ?${username}

</#macro>

<@test/>

${username}

? ?王五

李四


循環變量【在循環中的變量】

在list循環中定義的變量,循環中的變量只在循環中有效,也是一種臨時的變量定義方式

<#list 1..3 as?username>

? ?<#--循環中的變量出了循環就消失-->

? ?${username}

</#list>

${username}

? ?1

? ?2

? ?3

李四


?


assign?

???assign指令在前面已經使用了多次,它用于為該模板頁面創建或替換一個頂層變量, ???assign指令的用法有多種,包含創建或替換一個頂層變量,或者創建或替換多個變量等, ???它的最簡單的語法如下: ?????<#assign name=value [in namespacehash]>, ?????這個用法用于指定一個名為name的變量,該變量的值為value, ?????此外,FreeMarker允許在使用assign指令里增加in子句, ?????in子句用于將創建的name變量放入namespacehash命名空間中.

?

????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}
??????上面的代碼將產生如下輸出:

????????????????星期一 星期二 星期三 星期四 星期五 星期六 星期天

??????雖然assign指定了這種復雜變量值的用法,但是我們也不要濫用這種用法,

????????如下例子:

?????????????????<#assign x>Hello ${user}!</#assign>,

????????以上代碼改為如下寫法更合適:

?????????????????<#assign x="Hello ${user}!">


總結

以上是生活随笔為你收集整理的FreeMarker四种变量的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。