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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

五、案例-指令参考-freemarker指令、表达式

發布時間:2023/12/13 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 五、案例-指令参考-freemarker指令、表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

案例-指令參考描述:本人自己測試寫了一遍,如有錯的地方,懂freemarker的朋友望指點指點!

案例-指令參考

?

表達式

?

                  

一、 Assign

1、<#assign name1="北京" name2="上海" name3="廣東"> 調用:${name1}、${name2}、${name3} 2、<#assign name1> 消息模擬.. </#assign> 調用:${name1} 3、<#assign name5 in my命名空間> 消息模擬.. </#assign> 調用:<#import "InstructionReference.ftl" as my命名空間> ${my.name5}

二、attempt, recover

<#attempt>=============>輸出:${my.name5} <#recover>錯誤recover block </#attempt> attempt block:任意內容的模板塊。這是會被執行的, 但是如果期間發生了錯誤,那么這塊內容的輸出將會回滾,之后 recover block 就會被執行。 recover block: 任意內容的模板塊。 這個僅在 attempt block 執行期間發生錯誤時被執行。你可以在這里打印錯誤信息或其他操。

三、compress

當你使用了對空白、換行的格式(比如HTML或XML) 時壓縮指令對于移除多余的空白 <#assign x = " moo \n\n "> <#compress>1 2 3 4 5${x}test onlyI said, test only </#compress>

四、flush

<#Flush> 說明:當 FreeMarker 生成輸出時,它通常不會立即發送到最終接收端
(比如web瀏覽器或最終的文件),而是會將內容累積在緩沖區,
發送一個大塊的內容。 緩沖區的精確規則不是由 FreeMarker 決定的
,而是由嵌入的軟件決定的。 將緩沖區中累積的內容發送出去稱為沖洗。

五、function, return

<#function name param1 param2 ... paramN>...<#return returnValue>... </#function> 說明: name:方法變量的名稱(不是表達式) param1, param2 等: 局部變量的名稱, 存儲參數的值(不是表達式),在 = 號后面和默認值 (是表達式)是可選的。 paramN,最后一個參數, 可以可選的包含一個尾部省略(...), 這就意味著宏接受可變的參數數量。局部變量 paramN 將是額外參數的序列。 returnValue: 計算方法調用值的表達式。 return 指令可以在 <#function ...></#function> 之間被用在任意位置和任意次數。 沒有默認值的參數必須在有默認值參數 (paramName=defaultValue) 之前 示例1: <#function avg x y><#return (x + y) * 6> </#function> ${avg (10, 20)} 示例2: <#function avg nums...><#local sum = 0><#list nums as num><#local sum = sum + num></#list><#if nums? size = 5><#return sum / nums? size></#if> </#function> ${avg (10, 20, 30, 40, 40)}//參數可任意個

六、global全局變量

1、<#global name1="北京2"> 調用:${name1}2、<#global name1="北京" name2="上海" name3="廣東"> 調用:${name1}、${name2}、${name3}3、<#global name4>消息模擬. </#global> 調用:${name4}說明:一個相同名稱的變量存在的話, 那么會隱藏由 global 指令創建的變量。

七、if, else, elseif

示例1:只有 if 沒有 elseif 和 else <#if x == 1>x is 1 </#if> 示例2:只有 if 沒有 elseif 但是有 else <#if x == 1>x is 1 <#else>x is not 1 </#if> 示例3:有 if 和兩個 elseif 但是沒有 else <#if x == 1>x is 1 <#elseif x == 2>x is 2 <#elseif x == 3>x is 3 </#if> 示例4:有 if 和三個 elseif 還有 else <#if x == 1>x is 1 <#elseif x == 2>x is 2 <#elseif x == 3>x is 3 <#elseif x == 4>x is 4 <#else>x is not 1 nor 2 nor 3 nor 4 </#if> 示例5:嵌套 if 指令 <#if x == 1>x is 1<#if y == 1>and y is 1 too<#else>but y is not</#if> <#else>x is not 1<#if y < 0>and y is less than 0</#if> </#if>

八、import

<#import path as hash> 說明:使用參考assign,創建一個命名空間引入然后被調用。 path模板的路徑。 這是一個算作是字符串的表達式。(換句話說,它不是一個固定的字符串, 它可以是這樣的一些東西,比如,profile.baseDir + "/menu.ftl"。) hash訪問命名空間的哈希表變量不帶引號的名字。不是表達式。 (要引入動態創建的名字) 示例:<#import "/libs/mylib.ftl" as my> <@my.copyright date="1999-2002"/>

九、include

<#include path><#include path options> path包含文件的路徑;一個算作是字符串的表達式。(用其他話說, 它不用是一個固定的字符串,它也可以是像"/menu.ftl"這樣的東西。) options一個或多個這樣的選項: encoding=encoding, parse=parse parse: 算作是布爾值的表達式(為了向下兼容,也接受一部分字符串值) encoding: 算作是字符串的表達式 ignore_missing: 算作是布爾值的表達式 parse:如果它為 true, 那么被包含的文件將會當作FTL來解析,否則整個文件將被視為簡單文本 (也就是說不會在其中查找 FreeMarker 的結構)。如果你忽略了這個選項, 那么它默認是 true。 encoding:被包含文件從包含它的文件繼承的編碼方式 (實際就是字符集),除非你用這個選項來指定編碼方式。 合法的名字有:ISO-8859-2,UTF-8,Shift_JIS,Big5,EUC-KR,GB2312。 ignore_missing:當為 true,模板引用為空時壓制錯誤,而 <#include ...> 不會輸出任何東西。當為 false 時,如果模板不存在, 那么模板處理就會發生錯誤并停止。如果忽略這個選項,那么它的默認值是 false。 說明:使用它在你的模板中插入另外一個 FreeMarker 模板文件 (由 path 參數指定)。 被包含模板的輸出格式是在 include 標簽出現的位置插入的。 被包含的文件和包含它的模板共享變量,就像是被復制粘貼進去的一樣。 示例: <#include "/common/copyright.ftl"> <#include "/common/navbar.html" parse=false encoding="Shift_JIS">

十、local

<#local name=value><#local name1=value1 name2=value2 ... nameN=valueN><#local name>capture this </#local>說明:name在root中局部對象的名稱。它不是一個表達式。但它可以被寫作是字符串形式, 如果變量名包含保留字符,這是很有用的,比如 <#local "foo-bar" = 1>。 請注意,這個字符串沒有擴展插值(如"${foo}")。 =:賦值操作符,也可以簡寫的賦值操作符之一 (++,+= 等...),和 assign 指令 相似。value 存儲的值,是表達式。示例:它和 assign 指令 類似,但是它創建或替換局部變量。 這僅僅在宏和方法的內部定義才會有作用。 <#function Str1 nums> <#local sum = "......."><#return sum + nums> </#function> 調用:${Str1("測試")} 輸出:.......測試

十一、macro, nested, return

<#macro name param1 param2 ... paramN>...<#nested loopvar1, loopvar2, ..., loopvarN>...<#return>... </#macro> 說明: ? name: 宏變量的名稱,它不是表達式。和 頂層變量 的語法相同,比如 myMacro 或 my\-macro。 然而,它可以被寫成字符串的形式,如果宏名稱中包含保留字符時,這是很有用的,
    比如
<#macro "foo~bar">...。 注意這個字符串沒有擴展插值(如"${foo}")。 ? param1, param2,等...: 局部變量 的名稱,存儲參數的值 (不是表達式),在 = 號后面和默認值(是表達式)是可選的。 默認值也可以是另外一個參數,
    比如
<#macro section title label=title>。參數名稱和 頂層變量 的語法相同,所以有相同的特性和限制。 ? paramN, 最后一個參數,可能會有三個點(...), 這就意味著宏接受可變數量的參數,不匹配其它參數的參數可以作為最后一個參數 (也被稱作籠統參數)。
    當宏被命名參數調用, paramN 將會是包含宏的所有未聲明的鍵/值對的哈希表。當宏被位置參數調用,
paramN將是額外參數的序列。 (在宏內部,要查找參數,可以使用 myCatchAllParam?is_sequence。) ? loopvar1, loopvar2等...: 可選的,循環變量 的值, 是 nested 指令想為嵌套內容創建的。這些都是表達式。 return 和 nested 指令是可選的,而且可以在
<#macro></#macro> 之間被用在任意位置和任意次數

示例1:標準寫法

<#macro test1>

? Test text

</#macro>

調用:<@mtest1/>

?

示例2:帶參數的宏(參數可多個)

<#macro test2 data>

? Test text:${data}

</#macro>

調用:<@test2 data="Hello"/>

?

示例3帶參數、默認參數(可多個)

<#macro test3 data1 data2="2" data3="3">

? ===>${data1}

? ===>${data2}

? ===>${data3}

</#macro>

調用:<@test3 data1="Hello" data2="Hello"/> <@test3 data1="Hello" />

示例4:集合迭代元素的宏

<#macro list title items>

? <p>${title? cap_first}: </p>

? <ul>

??? <#list items as x>

????? <li>${x? cap_first} </li>

??? </#list>

? </ul>

</#macro>

調用:<@list items=["mouse", "elephant", "python"] title="標題"/>

Nested

Nested

說明:ested 指令執行自定義指令開始和結束標簽中間的模板片段。 嵌套的片段可以包含模板中任意合法的內容示例1:標準簡單 <#macro do_twice>1. <#nested>2. <#nested> </#macro> 調用:<@do_twice>something</@do_twice> 輸出: 示例2:嵌套內容創建循環變量 <#macro do_thrice><#nested 1><#nested 2><#nested 3> </#macro> 調用:<@do_thrice; x>${x} Anything. </@do_thrice>

return

說明:可以在任意位置留下一個宏或函數定義。 <#macro test d> This test<#return>Will not be printed$ozvdkddzhkzd </#macro> 調用:<@test d="===>"/>

十二、noparse(不解析ftl)

<#noparse>... </#noparse> 說明:不會在這個指令體中間尋找FTL標簽, 插值和其他特殊的字符序列,除了noparse的結束標記,避開對noparse內部ftl的解析。示例1: <#noparse><#list animals as animal><tr><td>${animal.name} <td>${animal. price} Euros</#list> </#noparse>

十三、stop

<#stop><#stop reason>說明:reason停止對模版解析,并且拋出一個異常,終止原因的信息化消息。是表達式,被算做是字符串,中止模板處理,給出(可選的)錯誤消息。 不要在普通情況下對結束模板處理使用! FreeMarker 模板的調用者會將它視為失敗的模板呈現。

十四、switch, case, default, break

<#switch "2"><#case "1">===>;1<#break><#case "2">===>; 2<#break><#case "3">===>; 3<#break> </#switch> 說明:value, refValue1表達式將會計算成相同類型的標量,break 和 default 是可選的。

十五、t, lt, rt

<#t> <#lt> <#rt> 說明:指示FreeMarker去忽略標記中行的特定的空白的移除發生在解析階段 t (整體削減):忽略本行中首和尾的所有空白。 lt (左側削減):忽略本行中首部所有的空白。 rt (右側削減):忽略本行中尾部所有的空白。

?

轉載于:https://www.cnblogs.com/xxt19970908/p/5594258.html

總結

以上是生活随笔為你收集整理的五、案例-指令参考-freemarker指令、表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

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