亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

FreeMarker設計指南(4) (完)

2019-11-18 11:22:33
字體:
來源:轉載
供稿:網友

4、雜項

1)用戶定義指令

l         宏和變換器變量是兩種不同類型的用戶定義指令,它們之間的區別是宏是在模板中使用macro指令定義,而變換器是在模板外由程序定義,這里只介紹宏

l         基本用法

Ø         宏是和某個變量關聯的模板片斷,以便在模板中通過用戶定義指令使用該變量,下面是一個例子:

<#macro greet>
  <font size="+2">Hello Joe!</font>
</#macro>  

Ø         作為用戶定義指令使用宏變量時,使用@替代FTL標記中的#

<@greet></@greet>

Ø         假如沒有體內容,也可以使用:

<@greet/>

l         參數

Ø         在macro指令中可以在宏變量之后定義參數,如:

<#macro greet person>
  <font size="+2">Hello ${person}!</font>
</#macro> 

Ø         可以這樣使用這個宏變量:

<@greet person="Fred"/> and <@greet person="Batman"/> 

輸出結果是:

  <font size="+2">Hello Fred!</font>
 and   <font size="+2">Hello Batman!</font>
   

Ø         宏的參數是FTL表達式,所以下面的代碼具有不同的意思:

<@greet person=Fred/>

Ø         這意味著將Fred變量的值傳給person參數,該值不僅是字符串,還可以是其它類型,甚至是復雜的表達式

Ø         宏可以有多參數,下面是一個例子:

<#macro greet person color>
  <font size="+2" color="${color}">Hello ${person}!</font>
</#macro> 

Ø         可以這樣使用該宏變量:

<@greet person="Fred" color="black"/> 

Ø         其中參數的次序是無關的,因此下面是等價的:

<@greet color="black" person="Fred"/>

Ø         只能使用在macro指令中定義的參數,并且對所有參數賦值,所以下面的代碼是錯誤的:

<@greet person="Fred" color="black" background="green"/>
<@greet person="Fred"/>

Ø         可以在定義參數時指定缺省值,如:

<#macro greet person color="black">
  <font size="+2" color="${color}">Hello ${person}!</font>
</#macro>  

Ø         這樣<@greet person="Fred"/>就正確了

Ø         宏的參數是局部變量,只能在宏定義中有效

l         嵌套內容

Ø         用戶定義指令可以有嵌套內容,使用<#nested>指令執行指令開始和結束標記之間的模板片斷

Ø         例子:

<#macro border>
  <table border=4 cellspacing=0 cellpadding=4><tr><td>
    <#nested>
  </tr></td></table>
</#macro>  

這樣使用該宏變量:

<@border>The bordered text</@border>

輸出結果:

  <table border=4 cellspacing=0 cellpadding=4><tr><td>
    The bordered text
  </tr></td></table>
  

Ø         <#nested>指令可以被多次調用,例如:

<#macro do_thrice>
  <#nested>
  <#nested>
  <#nested>
</#macro>
<@do_thrice>
  Anything.
</@do_thrice>  

輸出結果:

  Anything.
  Anything.
  Anything. 

Ø         嵌套內容可以是有效的FTL,下面是一個有些復雜的例子:

<@border>
  <ul>
  <@do_thrice>
    <li><@greet person="Joe"/>
  </@do_thrice>
  </ul>
</@border> 

輸出結果:

  <table border=4 cellspacing=0 cellpadding=4><tr><td>
      <ul>
    <li><font size="+2">Hello Joe!</font>
 
    <li><font size="+2">Hello Joe!</font>
 
    <li><font size="+2">Hello Joe!</font>
 
  </ul>
 
  </tr></td></table>  

Ø         宏定義中的局部變量對嵌套內容是不可見的,例如:

<#macro repeat count>
  <#local y = "test">
  <#list 1..count as x>
    ${y} ${count}/${x}: <#nested>
  </#list>
</#macro>
<@repeat count=3>${y?default("?")} ${x?default("?")} ${count?default("?")}</@repeat>

輸出結果:

    test 3/1: ? ? ?
    test 3/2: ? ? ?
    test 3/3: ? ? ?

Ø          

l         在宏定義中使用循環變量



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
最近2019免费中文字幕视频三| 国产亚洲精品久久久| 亚洲成年人影院在线| 国产在线播放不卡| 亚洲在线一区二区| 成人a免费视频| 黑人巨大精品欧美一区二区三区| 日产精品久久久一区二区福利| 欧美激情伊人电影| 国产午夜精品全部视频在线播放| 91精品国产91久久| 少妇高潮久久77777| 亚洲图片在线综合| 国产成人亚洲综合青青| 久久人91精品久久久久久不卡| 亚洲欧美中文日韩在线| 亚洲美女喷白浆| 亚洲电影中文字幕| 国产精品一区专区欧美日韩| 国产婷婷成人久久av免费高清| 插插插亚洲综合网| 中国日韩欧美久久久久久久久| 欧美午夜www高清视频| 5566成人精品视频免费| 成人网页在线免费观看| 欧美成人高清视频| 久久精品国产视频| 亚洲在线视频观看| 国产剧情久久久久久| 九九热99久久久国产盗摄| 欧美日韩久久久久| 日韩成人激情在线| 久久躁狠狠躁夜夜爽| 日韩av电影在线播放| 国产91成人video| 欧美在线免费观看| 久久久久久国产免费| 精品久久中文字幕| 久久这里只有精品视频首页| 午夜欧美不卡精品aaaaa| 日韩精品在线观| 亚洲视频在线免费观看| 欧美日韩美女在线观看| 国产精品福利网站| 最近2019中文字幕第三页视频| 中文亚洲视频在线| 国语自产精品视频在线看抢先版图片| 亚洲色图校园春色| 亚洲第一网站男人都懂| 亚洲欧美中文日韩v在线观看| 欧美午夜宅男影院在线观看| 国产成人亚洲综合91精品| 亚洲情综合五月天| 亚洲欧美中文日韩v在线观看| 91福利视频网| 日本韩国在线不卡| 2021国产精品视频| 国产精品日韩欧美综合| 国产成人精品一区| 久久99热精品| www日韩中文字幕在线看| 欧美日韩中国免费专区在线看| 亚洲一区中文字幕在线观看| 国产亚洲美女精品久久久| 欧美日韩成人精品| 欧美伦理91i| 这里只有视频精品| 日韩欧美亚洲范冰冰与中字| 国产精品爽爽爽| 亚洲欧美中文日韩在线v日本| 26uuu日韩精品一区二区| 91人人爽人人爽人人精88v| 成人免费视频网址| 精品国产999| 国产精品中文在线| 久久久视频免费观看| 色琪琪综合男人的天堂aⅴ视频| 日日狠狠久久偷偷四色综合免费| 综合av色偷偷网| 亚洲国产精品成人av| 中文字幕日本欧美| 欧美日韩综合视频| 中文字幕日韩专区| 日本午夜精品理论片a级appf发布| 日韩电影免费观看中文字幕| 欧美专区国产专区| 日韩av中文在线| 国模精品系列视频| 在线成人免费网站| 国产精品极品美女粉嫩高清在线| 亚洲精品久久久久久久久久久久久| 日韩一区二区三区xxxx| 日韩美女免费视频| 91精品视频在线看| 两个人的视频www国产精品| 精品久久久久久中文字幕大豆网| 亚洲va电影大全| 在线成人中文字幕| 国产精品久久久999| 亚洲一区二区免费在线| www.久久撸.com| 久久人人爽人人爽人人片av高清| 欧美亚洲视频在线看网址| 成人av.网址在线网站| 国产成人在线视频| 国产精品久久久久秋霞鲁丝| 国产日产欧美精品| 欧美日韩国产一区中文午夜| 永久免费毛片在线播放不卡| 欧美高清自拍一区| 国产精品91在线观看| 国产女精品视频网站免费| 亚洲欧美精品中文字幕在线| 久久国产精品免费视频| 欧美裸体xxxx极品少妇软件| 日本久久久久久| 亚洲欧美日韩中文在线制服| 国产精品一区二区三区久久久| 久热精品视频在线免费观看| 狠狠久久五月精品中文字幕| 亚洲网站在线观看| 亚洲欧洲美洲在线综合| 国产精品草莓在线免费观看| 另类美女黄大片| 国产精品白嫩美女在线观看| 日韩精品久久久久久久玫瑰园| 欧美激情喷水视频| 久久久久久com| 欧美激情精品久久久久久久变态| 中文字幕精品网| 亚洲女成人图区| 国产一区二区丝袜高跟鞋图片| 国产欧美中文字幕| 久久综合亚洲社区| 日本免费在线精品| 国产精品第一区| 久久久国产视频91| 日韩精品免费在线视频观看| 一区二区三区天堂av| 亚洲黄页网在线观看| 国产精品大陆在线观看| 国产精品自产拍在线观| 国产一区私人高清影院| 欧美日韩性视频在线| 国产精品综合网站| 一区二区三欧美| 国产精品成人av性教育| 久久久999成人| 亚洲free嫩bbb| 国产精品91久久| 性欧美办公室18xxxxhd| 国产精品露脸自拍| 8050国产精品久久久久久| 日韩在线视频线视频免费网站| 97精品国产97久久久久久免费| 亚洲精品www| 欧美一性一乱一交一视频| 国产成人精品久久亚洲高清不卡| 91精品国产综合久久香蕉的用户体验| 亚洲国产日韩欧美在线图片| 日本高清视频一区| 国产日韩精品电影| 亚洲影院色无极综合| 国产精品第二页|