锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鍒涘緩涓涓?STRONG>DbUnit Test Case
銆傘傘?BR>
鍙傛暟錛嶅湪macro鎸囦護涓彲浠ュ湪瀹忓彉閲忎箣鍚庡畾涔夊弬鏁?BR>渚嬩簩錛?BR><#macro greet person>
<font size="+2">Hello ${person}!</font>
</#macro>
浣跨敤錛?lt;@greet person="Fred"/> and <@greet person="Batman"/>
緇撴灉錛?<font size="+2">Hello Fred!</font> and <font size="+2">Hello Batman!</font>
macro鍙互鏈夊涓弬鏁幫紝鍙傛暟鐨勬搴忔槸鏃犲叧鐨勶紝鍦╩acro鎸囦護涓彧鑳戒嬌鐢ㄥ畾涔夌殑鍙傛暟錛屽茍涓斿繀欏誨鎵鏈夊弬鏁拌祴鍊鹼紝鍙互鍦ㄥ畾涔夊弬鏁版椂鎸囧畾緙虹渷鍊鹼細
鍦ㄨ嚜瀹氫箟鎸囦護宓屽鍐呭錛氭ā鏉跨墖鏂腑浣跨敤<#nested>鎸囦護
浣跨敤錛?lt;@border>The bordered text</@border>
緇撴灉錛?/P>
<#nested>鎸囦護鍙互琚嬈¤皟鐢細
浣跨敤錛?BR><@do_thrice>Anything.</@do_thrice>
緇撴灉錛?BR>Anything.
Anything.
Anything.
娉ㄦ剰錛氬祵濂楀唴瀹規槸鏃犳硶璁塊棶鍒癿acro涓殑灞閮ㄥ彉閲忕殑銆?BR>渚嬪錛?/P>
緇撴灉錛?BR>test 3/1: ? ? ?
test 3/2: ? ? ?
test 3/3: ? ? ?
涓嬮潰鏄竴涓祵濂椾嬌鐢ㄨ嚜瀹氫箟鎸囦護鐨勪緥瀛愶細
緇撴灉錛?/P>
鍦╩acro涓?STRONG>浣跨敤寰幆鍙橀噺錛嶄綔涓簄ested鎸囦護鐨勫弬鏁頒紶閫掑驚鐜彉閲忕殑瀹為檯鍊鹼紝鑰屽湪璋冪敤鐢ㄦ埛瀹氫箟鎸囦護鏃訛紝鍦?lt;@鈥?gt;寮濮嬫爣璁扮殑鍙傛暟鍚庨潰鎸囧畾寰幆鍙橀噺鐨勫悕瀛楋細
緇撴灉錛?BR>1. 0.5
2. 1
3. 1.5
4. 2 Last!
娉ㄦ剰錛氬驚鐜彉閲忓拰鐢ㄦ埛瀹氫箟鎸囦護寮濮嬫爣璁版寚瀹氱殑鏁扮洰鍙互涓嶅悓錛岃皟鐢ㄦ椂灝戞寚瀹氬驚鐜彉閲忥紝鍒欏鎸囧畾鐨勫間笉鍙錛岃皟鐢ㄦ椂澶氭寚瀹氬驚鐜彉閲忥紝澶氫綑鐨勫驚鐜彉閲忎笉浼氳鍒涘緩銆?BR> 鐢╝ssign鎸囦護鍒涘緩鍜屾浛鎹㈢殑渚嬪瓙錛?/P>
緇撴灉錛?BR>1 灞閮ㄥ彉閲忛殣钘?鑰屼笉鏄鐩?鍚屽悕鐨刾lain鍙橀噺錛涘驚鐜彉閲忛殣钘忓悓鍚嶇殑灞閮ㄥ彉閲忓拰plain鍙橀噺錛屼笅闈㈡槸涓涓緥瀛愶細 緇撴灉錛?BR>1. plain 鍐呴儴寰幆鍙橀噺闅愯棌鍚屽悕鐨勫閮ㄥ驚鐜彉閲忥紝渚嬪錛?/P>
緇撴灉錛?BR>loop 1 妯℃澘涓殑鍙橀噺浼氶殣钘忥紙鑰屼笉鏄鐩栵級鏁版嵁妯″瀷涓悓鍚嶅彉閲忥紝濡傛灉闇瑕佽闂暟鎹ā鍨嬩腑鐨勫悓鍚嶅彉閲忥紝浣跨敤鐗規畩鍙橀噺global錛屼笅闈㈢殑渚嬪瓙鍋囪鏁版嵁妯″瀷涓殑user鐨勫兼槸Big Joe錛?/P>
鍛藉悕(namespaces)絀洪棿錛嶉氬父鎯呭喌錛屽彧浣跨敤涓涓懡鍚嶇┖闂達紝縐頒負涓誨懡鍚嶇┖闂?main namespace)錛屼絾浣犳槸涓嶄細鎰忚瘑鍒拌繖浜涚殑錛涗負浜嗗垱寤哄彲閲嶇敤鐨刴acro銆乼ransforms鎴栧叾瀹冨彉閲忕殑闆嗗悎(閫氬父縐板簱)錛屽繀欏諱嬌鐢ㄥ鍛藉悕絀洪棿錛屼負浜嗛槻姝㈠悓鍚嶅啿紿併?/P>
棣栧厛鍒涘緩涓涓簱(鍋囪淇濆瓨鍦╨ib/my_test.ftl涓?錛?/P>
浣跨敤import鎸囦護瀵煎叆搴撳埌妯℃澘涓紝Freemarker浼氫負瀵煎叆鐨勫簱鍒涘緩鏂扮殑鍛藉悕絀洪棿錛屽茍鍙互閫氳繃import鎸囦護涓寚瀹氱殑hash(鏁e垪)鍙橀噺璁塊棶搴撲腑鐨勫彉閲忥細 緇撴灉錛?/P>
涓婇潰鐨勪緥瀛愪腑浣跨敤鐨勪袱涓悓鍚嶅彉閲忓茍娌℃湁鍐茬獊錛屽洜涓哄畠浠綅浜庝笉鍚岀殑鍛藉悕絀洪棿 鍙互浣跨敤assign鎸囦護鍦ㄥ鍏ョ殑鍛藉悕絀洪棿涓垱寤烘垨鏇夸唬鍙橀噺錛?/P>
緇撴灉錛?BR>jsmith@acme.com 鏁版嵁妯″瀷涓殑鍙橀噺浠諱綍鍦版柟閮藉彲瑙侊紝涔熷寘鎷笉鍚岀殑鍛藉悕絀洪棿錛屼笅闈慨鏀逛簡鍒氭墠鍒涘緩鐨勫簱錛?/P>
鍋囪鏁版嵁妯″瀷涓殑user鍙橀噺鐨勫兼槸Fred錛?/P>
緇撴灉錛?BR> <p>Copyright (C) 1999-2002 Fred. All rights reserved.</p>
妯℃澘涓殑鍙橀噺錛屾湁涓夌綾誨瀷錛?BR>1.) plain(鍏ㄥ眬)鍙橀噺錛氬彲浠ュ湪妯℃澘鐨勪換浣曞湴鏂硅闂紝鍖呮嫭浣跨敤include鎸囦護鎻掑叆鐨勬ā鏉匡紝浣跨敤assign鎸囦護鍒涘緩鍜屾浛鎹?BR>2.) 灞閮ㄥ彉閲?/STRONG>錛氬湪macro涓湁鏁堬紝浣跨敤local鎸囦護鍒涘緩鍜屾浛鎹?BR>3.) 寰幆鍙橀噺錛氬彧鑳藉瓨鍦ㄤ簬鎸囦護鐨勫祵濂楀唴瀹癸紝鐢辨寚浠?濡俵ist)鑷姩鍒涘緩錛涘畯鐨勫弬鏁版槸灞閮ㄥ彉閲忥紝鑰屼笉鏄驚鐜彉閲?/P>
<#assign x = 1> <#-- create variable x -->
${x}
<#assign x = x + 3> <#-- replace variable x -->
${x}
4<#assign x = "plain">
1. ${x} <#-- we see the plain var. here -->
<@test/>
6. ${x} <#-- the value of plain var. was not changed -->
<#list ["loop"] as x>
7. ${x} <#-- now the loop var. hides the plain var. -->
<#assign x = "plain2"> <#-- replace the plain var, hiding does not mater here -->
8. ${x} <#-- it still hides the plain var. -->
</#list>
9. ${x} <#-- the new value of plain var. -->
<#macro test>
2. ${x} <#-- we still see the plain var. here -->
<#local x = "local">
3. ${x} <#-- now the local var. hides it -->
<#list ["loop"] as x>
4. ${x} <#-- now the loop var. hides the local var. -->
</#list>
5. ${x} <#-- now we see the local var. again -->
</#macro>
2. plain
3. local
4. loop
5. local
6. plain
7. loop
8. loop
9. plain2<#list ["loop 1"] as x>
${x}
<#list ["loop 2"] as x>
${x}
<#list ["loop 3"] as x>
${x}
</#list>
${x}
</#list>
${x}
</#list>
loop 2
loop 3
loop 2
loop 1 <#assign user = "Joe Hider">
${user} <#-- prints: Joe Hider -->
${.globals.user} <#-- prints: Big Joe -->
<#macro copyright date>
<p>Copyright (C) ${date} Julia Smith. All rights reserved.
<br>Email: ${mail}</p>
</#macro>
<#assign mail = "jsmith@acme.com">
<#import "/lib/my_test.ftl" as my>
<#assign mail="fred@acme.com">
<@my.copyright date="1999-2002"/>
${my.mail}
${mail}
<p>Copyright (C) 1999-2002 Julia Smith. All rights reserved.
<br>Email: jsmith@acme.com</p>
jsmith@acme.com
fred@acme.com
<#import "/lib/my_test.ftl" as my>
${my.mail}
<#assign mail="jsmith@other.com" in my>
${my.mail}
jsmith@other.com <#macro copyright date>
<p>Copyright (C) ${date} ${user}. All rights reserved.</p>
</#macro>
<#assign mail = "${user}@acme.com">
<#import "/lib/my_test.ftl" as my>
<@my.copyright date="1999-2002"/>
${my.mail}
Fred@acme.com
鍙傝冿細
FreeMarker in sourceforge.net
]]>
涓婇潰鐨勪緥瀛愪腑錛屽湪綆鍗曠殑HTML涓姞鍏ヤ簡涓浜涚敱${鈥鍖呭洿鐨勭壒瀹欶reeMarker鐨勬寚浠わ紝榪欎釜鏂囦歡灝辯О涓烘ā鏉夸簡銆傝寀ser銆乴atestProduct.url鍜宭atestProduct.name鏉ヨ嚜浜庢暟鎹ā鍨嬶紝鐢盝ava紼嬪簭鎻愪緵錛屾ā鏉胯璁¤呭氨涓嶇敤鍏沖績鏁版嵁浠庡摢鏉ョ殑銆?/P>
FreeMarker妯℃澘涓彲浠ュ寘鎷笅闈㈠洓縐嶇壒瀹氶儴鍒嗭細
涓.) 鏂囨湰錛氱洿鎺ヨ緭鍑?BR>浜?) FTL鏍囪(FreeMarker妯℃澘璇█鏍囪)錛氱被浼間簬HTML鏍囪錛屽悕瀛楀墠鍔?(鏈変簺浠寮濮嬶紝鐢ㄦ埛鑷畾涔夋爣璁?浜堜互鍖哄垎錛屼笉浼氳緭鍑恒?BR>瀛楃涓?/STRONG>錛?浣跨敤鍗曞紩鍙鋒垨鍙屽紩鍙烽檺瀹氾紱濡傛灉鍖呭惈鐗規畩瀛楃闇瑕佽漿涔夌錛?{"It's \"quoted\" andthis is a backslash: \\"}
鏈変竴綾葷壒孌婄殑瀛楃涓?${r"C:\foo\bar"}錛岃緭鍑虹粨鏋勪負錛欳:\foo\bar錛屽湪寮曞彿鍓嶉潰鍔爎琚涓烘槸綰枃鏈?
鏁板瓧錛嶇洿鎺ヨ緭鍏ワ紝涓嶉渶瑕佸紩鍙楓?{08}, ${+8}, ${8.00} and ${8} 閮芥槸鐩稿悓鐨?
甯冨皵鍊?/STRONG>錛峵rue鍜宖alse錛屼笉浣跨敤寮曞彿
Sequences(搴忓垪)錛嶇敱閫楀彿鍒嗛殧鐨勫彉閲忓垪琛紝鐢辨柟鎷彿闄愬畾錛岀被浼糺ava涓殑涓緇存暟緇勶細
杈撳嚭緇撴灉錛?BR>winter
spring
summer
autumn
渚嬩簩錛歔2 + 2, [1, 2, 3, 4], "whatnot"]
渚嬩笁錛?..5錛岀瓑鍚屼簬[2, 3, 4, 5]錛?..2錛岀瓑鍚屼簬[5,4,3,2]銆傛敞鎰忔柟鎷彿鏄笉闇瑕佺殑銆?BR>
Hashes(鏁e垪)錛嶇敱閫楀彿鍒嗛殧鐨勯敭-鍊煎垪琛紝鐢卞ぇ鎷彿闄愬畾錛岄敭鍜屽間箣闂寸敤鍐掑彿鍒嗛殧錛歿"name":"green mouse", "price":150}錛岄敭鍜屽奸兘鏄〃杈懼紡錛屼絾鏄敭蹇呴』鏄瓧絎︿覆銆?/P>
鑾峰彇鍙橀噺錛?{variable}錛屽彉閲忓悕鍙兘鏄瓧姣嶃佹暟瀛椼佷笅鍒掔嚎銆?銆丂鍜?鐨勭粍鍚堬紝涓斾笉鑳戒互鏁板瓧寮澶淬備笅鍒楄〃杈懼紡鏄瓑浠風殑錛?BR>book.author.name
book["author"].name
book.author.["name"]
book["author"]["name"]
鑾峰彇Sequence(搴忓垪)鐗囨柇錛嶄嬌鐢╗startindex..endindex]錛屼緥濡傦細seq涓瓨鍌ㄤ簡"a", "b", "c", "d","e"錛岄偅涔坰eq[1..2]鍖呭惈浜哹鍜宑涓や釜鍊箋?BR>
鍙互浣跨敤.variablename璇硶璁塊棶FreeMarker鍐呯疆鍙橀噺銆?/P>
瀛楃涓叉搷浣?/STRONG>
{"Hello ${user}!"} <==> ${"Hello " + user + "!"}
${"${user}${user}${user}${user}"} <==> ${user + user + user + user}
${鈥鍙兘鍦ㄦ枃鏈腑浣跨敤錛屼笅闈㈡槸閿欒鐨勪唬鐮侊細
<#if ${isBig}>Wow!</#if>
<#if "${isBig}">Wow!</#if> //姝ゅ鐨勪唬鐮佷篃鏄敊璇殑錛屽洜涓篿f鎸囦護闇瑕佺殑鏄痓oolean錛屽疄闄呯殑鍗存槸涓瓧絎︿覆
瀛愬瓧絎︿覆鐨勬搷浣滐紝鍋囪user鐨勫間負"Big Joe"錛?BR>${user[0]}${user[4]} <==> BJ
${user[1..4]} <==> ig J
Sequences(搴忓垪)鎿嶄綔
緇撴灉錛?BR>- Joe
- Fred
- Julia
- Kate
Hashes(鏁e垪)鎿嶄綔
緇撴灉錛?BR>- Joe is 30
- Fred is 25
- Julia is 18
綆楁湳榪愮畻
緇撴灉錛?BR>-75
2.5
2
娉ㄦ剰錛?鎿嶄綔絎︿袱杈瑰繀欏繪槸鏁板瓧錛涗嬌鐢?+"鏃訛紝濡傛灉涓杈規槸鏁板瓧錛屼竴杈規槸瀛楃涓詫紝灝變細鑷姩灝嗘暟瀛楄漿鎹負瀛楃涓層?BR>
浣跨敤鍐呭緩鐨勬寚浠nt鑾峰緱鏁存暟閮ㄥ垎錛?/P>
緇撴灉錛?BR>2
1
1
-1
-1
姣旇緝鎿嶄綔絎?/STRONG>錛?lt;#if expression>...</#if>
1.)浣跨敤=錛堟垨==錛屽畬鍏ㄧ浉絳夛級嫻嬭瘯涓や釜鍊兼槸鍚︾浉絳夛紝浣跨敤!= 嫻嬭瘯涓や釜鍊兼槸鍚︿笉鐩哥瓑
2.)=鍜?=涓よ竟蹇呴』鏄浉鍚岀被鍨嬬殑鍊鹼紝鍚﹀垯浼氫駭鐢熼敊璇紝渚嬪<#if 1 = "1">浼氬紩璧烽敊璇?BR>3.)Freemarker鏄簿紜瘮杈冿紝鎵浠?x"銆?x "鍜?X"鏄笉鐩哥瓑鐨?BR>4.)瀵規暟瀛楀拰鏃ユ湡鍙互浣跨敤<銆?lt;=銆?gt;鍜?gt;=錛屼絾涓嶈兘鐢ㄤ簬瀛楃涓?BR>5.)鐢變簬Freemarker浼氬皢>瑙i噴鎴怓TL鏍囪鐨勭粨鏉熷瓧絎︼紝鎵浠ュ浜?gt;鍜?gt;=鍙互浣跨敤鎷彿鏉ラ伩鍏嶈繖縐嶆儏鍐碉紝渚嬪<#if (x > y)>錛屽彟涓縐嶆浛浠g殑鏂規硶鏄紝浣跨敤lt銆乴te銆乬t鍜実te鏉ユ浛浠?lt;銆?lt;=銆?gt;鍜?gt;=
閫昏緫鎿嶄綔絎?/STRONG>錛?amp;&(and)銆亅|(or)銆?(not)錛屽彧鑳界敤浜庡竷灝斿鹼紝鍚﹀垯浼氫駭鐢熼敊璇?BR><#if x < 12 && color = "green">
We have less than 12 things, and they are green.
</#if>
<#if !hot> <#-- here hot must be a boolean -->
It's not hot.
</#if>
鍐呯疆鍑芥暟錛嶇敤娉曠被浼艱闂甴ash(鏁e垪)鐨勫瓙鍙橀噺錛屽彧鏄嬌鐢??"鏇夸唬"."錛屼緥濡傦細user?upper_case
涓嬮潰鍒楀嚭甯哥敤鐨勪竴浜涘嚱鏁幫細
瀵逛簬瀛楃涓?/U>
html錛嶅瀛楃涓茶繘琛孒TML緙栫爜
cap_first錛嶄嬌瀛楃涓茬涓涓瓧姣嶅ぇ鍐?BR>lower_case錛嶅皢瀛楃涓茶漿鎹㈡垚灝忓啓
trim錛嶅幓鎺夊瓧絎︿覆鍓嶅悗鐨勭┖鐧藉瓧絎?BR>瀵逛簬Sequences(搴忓垪)
size錛嶈幏寰楀簭鍒椾腑鍏冪礌鐨勬暟鐩?BR>瀵逛簬鏁板瓧
int錛嶅彇寰楁暟瀛楃殑鏁存暟閮ㄥ垎錛堝-1.9?int鐨勭粨鏋滄槸-1錛?BR>
渚嬩竴錛?/P>
<#-- test鐨勫間負Tom & Jerry -->
${test?html}
${test?upper_case?html}
緇撴灉錛?BR>Tom & Jerry
TOM & JERRY
渚嬩簩錛?/P>
緇撴灉錛?BR>4
Spring
Horse
鏂規硶鐨勮皟鐢?/STRONG>
${repeat("What", 3)}
${repeat(repeat("x", 2), 3) + repeat("What", 4)?upper_case}
緇撴灉錛?BR>WhatWhatWhat
xxxxxxWHATWHATWHATWHAT
鎿嶄綔絎︿紭鍏堥『搴?/STRONG>
鍚庣紑 [subvarName] [subStringRange] . (methodParams)
涓鍏?nbsp; +expr銆?expr銆?
鍐呭緩 ?
涔樻硶 *銆?/ 銆?
鍔犳硶 +銆?
鍏崇郴 <銆?gt;銆?lt;=銆?gt;=錛坙t銆乴te銆乬t銆乬te錛?BR>鐩哥瓑 =銆?=
閫昏緫 &&
閫昏緫 ||
鏁板瓧鑼冨洿 ..
涓?) Interpolation錛氱敱${...}鎴?{...}涓ょ綾誨瀷錛岃緭鍑鴻綆楀鹼紝鍙互瀹氫箟杈撳嚭鐨勬牸寮?BR>渚嬩竴錛?/P>
緇撴灉錛?BR>$42.00
$42.00
42
$42.00
4,200%
渚嬩簩錛?/P>
緇撴灉錛?BR>2003-04-08 21:24:44 Pacific Daylight Time
Tue, Apr 8, '03
Tuesday, April 08, 2003, 09:24:44 PM (PDT)
渚嬩笁錛?/P>
緇撴灉錛?BR>yes
渚嬪洓錛?/P>
璇存槑錛歮X錛嶅皬鏁伴儴鍒嗘渶灝廥浣嶏紱MX錛嶅皬鏁伴儴鍒嗘渶澶浣嶃?/P>
鍥?) 娉ㄩ噴錛?lt;#--鍜?->
涓嬮潰鏄竴涓父鐢ㄧ殑妯℃澘渚嬪瓙錛?/P>
娉ㄦ剰鐐?/STRONG>錛?BR>1.) FreeMarker鏄尯鍒嗗ぇ灝忓啓鐨勶紱
2.) FTL鏍囪涓嶈兘浣嶄簬鍙︿竴涓狥TL鏍囪鍐呴儴錛屼緥濡傦細<#if <#include 'foo'>='bar'>...</if>錛?BR>3.) ${鈥鍙兘鍦ㄦ枃鏈腑浣跨敤錛?BR>4.) 澶氫綑鐨勭┖鐧藉瓧絎︿細鍦ㄦā鏉胯緭鍑烘椂鍘婚櫎錛?BR>5.) 濡傛灉浣跨敤鐨勬寚浠や笉瀛樺湪錛屼細浜х敓涓涓敊璇秷鎭?/P>
鍙傝冿細
FreeMarker in sourceforge.net
]]>