<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    不做浮躁的人
    正在行走的人...
    posts - 171,  comments - 51,  trackbacks - 0
    一:if指令:
    <#if condition>
    ?
    ...
    <#elseif condition2>
    ?
    ...
    <#elseif condition3>
    ?
    ...
    ...
    <#else>
    ?
    ...
    </#if>

    二:switch
    <#switch value>
    ? <#case
    refValue1>
    ???
    ...
    ??? <#break>
    ? <#case
    refValue2>
    ???
    ...
    ??? <#break>
    ?
    ...
    ? <#case refValueN>
    ???
    ...
    ??? <#break>
    ? <#default>
    ???
    ...
    </#switch>

    三:list,break
    <#list sequence as item>
    ??? ...
    </#list>
    兩個特殊的循環變量:
    item_index: 當前變量的索引值。
    item_has_next: 是否存在下一個對象。

    可以用<#break/>指令離開loop循環。

    四:include指令
    <#include filename>
    或者
    <#include filenameoptions>


    filename
    : 表達式轉換為字符串
    options: encoding=encoding, parse=parse
    ???encoding: 表達式轉換為字符串
    ???parse: 表達式轉換為邏輯值,是否作為ftl文件解析。
    <#include "/common/navbar.html" parse=false encoding="Shift_JIS">

    <#include "*/footer.ftl">表示當前目錄下以及所有父目錄下的文件。
    如果當前模版在/foo/bar/template.ftl ,那么查找footer.ftl的順序為:
    /foo/bar/footer.ftl
    /foo/footer.ftl
    /footer.ftl
    這種方式講允許設計者將通用的模版放在父文件夾里面。
    也可以只指定部分路徑:<#include "*/commons/footer.ftl">

    五:import指令
    <#import path as hash>
    六:noparse
    <#noparse>
    ? ...
    </#noparse>

    七:compress
    <#compress>
    ? ...
    </#compress>
    八:escape,noescape
    <#escape identifier as expression>
    ? ...
    ? <#noescape>...</#noescape>
    ? ...
    </#escape>

    escape指令body區的ftl的interpolations都會被自動加上escape表達式。但是不會影響字符串內的interpolations。而且也只會影響到body內出現的interpolations,比如不會影響到include的ftl的interpolations。

    <#escape x as x?html>
    ? First name: ${firstName}
    ? Last name: ${lastName}
    ? Maiden name: ${maidenName}
    </#escape>
    等同于:

    First name: ${firstName?html}
    ? Last name: ${lastName?html}
    ? Maiden name: ${maidenName?html}

    escape指令在解析模版時起作用,而不是運行時起作用。

    escape指令還能嵌套使用,子繼承父的escape規則。

    <#escape x as x?html>
    ? Customer Name: ${customerName}
    ? Items to ship:
    ? <#escape x as itemCodeToNameMap[x]>
    ??? ${itemCode1}
    ??? ${itemCode2}
    ??? ${itemCode3}
    ??? ${itemCode4}
    ? </#escape>
    </#escape>
    等同于:
    Customer Name: ${customerName?html}
    ? Items to ship:
    ??? ${itemCodeToNameMap[itemCode1]?html}
    ??? ${itemCodeToNameMap[itemCode2]?html}
    ??? ${itemCodeToNameMap[itemCode3]?html}
    ??? ${itemCodeToNameMap[itemCode4]?html}

    九:assign指令
    <#assign name=value>
    or
    <#assign name1=value1name2=value2... nameN=valueN>
    or
    <#assign same as above... in namespacehash>
    or
    <#assign name>
      capture this
    </#assign>
    or
    <#assign name in namespacehash>
      capture this
    </#assign>

    創建或者替換一個已經存在的變量,只能作用于頂層變量。 不好的做法:<#assign x>Hello ${user}!</#assign>
    更改為:<#assign x="Hello ${user}!">




    十:global指令
    <#global name=value>
    or
    <#global name1=value1name2=value2... nameN=valueN>
    or
    <#global name>
    ? capture this
    </#global>



    十一:local指令
    <#local name=value>
    or
    <#local name1=value1name2=value2... nameN=valueN>
    or
    <#local name>
    ? capture this
    </#local>
    只能用于macro的定義body中。


    十二:setting指令:

    <#setting name=value>
    name的取值范圍:
    local:
    number_format:
    boolean_format
    :缺省值為"true,false"
    date_format, time_format,
    datetime_format
    time_zone:
    url_escaping_charset
    classic_compatible

    十三:用戶自定義指令
    <@macro_or_transfparam1=val1param2=val2...paramN=valN/><@macro_or_transfparam1=val1param2=val2...paramN=valN ; lv1, lv2, ..., lvN/><@macro_or_transf...>
      ...
    </@macro_or_transf>


    <@macro_or_transf...> ... </@>
    <@macro_or_transfval1, val2, ..., valN/>

    十四:macro,nested,return
    <#macro nameparam1param2... paramN>
    ? ...
    ? <#nested loopvar1, loopvar2, ..., loopvarN>
    ? ...
    ? <#return>
    ? ...
    </#macro>

    十五:function, return
    <#function nameparam1param2... paramN>
    ? ... <#return returnValue>
    ? ...
    </#function>

    <#function avg x y>
    ? <#return (x + y) / 2>
    </#function>
    ${avg(10, 20)}?

    十六:flush
    <#flush>

    十七:stop
    <#stop>
    or
    <#stop reason>
    取消處理模版。

    十八:ftl指令
    <#ftl param1=value1param2=value2...paramN=valueN>
    ftl指令必須放在ftl文件的最上面。

    參數范圍:
    encoding:
    strip_whitespace
    strip_text
    strict_syntax

    十九:t, lt, rt
    二十:attempt, recover
    <#attempt>
    ? attempt block
    <#recover> ?
    recover block
    </#attempt>

    <#attempt>
    ? Optional content: ${thisMayFails}
    <#recover>
    ? Ops! The optional content is not available.
    </#attempt>
    posted on 2007-03-27 01:04 不做浮躁的人 閱讀(1276) 評論(1)  編輯  收藏 所屬分類: freemarker

    FeedBack:
    # re: freemaker學習筆記--指令參考
    2007-04-05 10:18 | huozhe
    非常好!
    希望樓主繼續共享freemark相關文章,謝謝!
    我的郵箱:huozheviva@gmail.com  回復  更多評論
      

    <2007年3月>
    25262728123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(9)

    隨筆分類(31)

    隨筆檔案(75)

    文章分類(1)

    文章檔案(3)

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 无码午夜成人1000部免费视频| 免费精品国产自产拍在线观看| 亚洲第一区香蕉_国产a| 久久久久久a亚洲欧洲AV| 国产成人无码免费网站| 亚洲精品视频在线免费| 国产一卡二卡3卡四卡免费| 国产成人免费一区二区三区| 亚洲中文字幕在线乱码| 亚洲欧洲日韩国产| 深夜福利在线视频免费| 99爱在线精品免费观看| 亚洲中文字幕无码不卡电影| 国产黄在线播放免费观看| 中文亚洲AV片不卡在线观看| 日韩电影免费在线观看中文字幕| 成人免费看吃奶视频网站| 亚洲精品国产精品乱码不卡√| 国产精品亚洲四区在线观看| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 亚洲免费综合色在线视频| a级特黄毛片免费观看| 青青青免费国产在线视频小草| 亚洲va久久久久| 一级毛片全部免费播放| 亚洲明星合成图综合区在线| 好爽…又高潮了免费毛片| 亚洲国产成人久久综合一| 免费一区二区三区在线视频| 亚洲中文字幕在线乱码| 亚洲一区二区三区免费视频| 亚洲av日韩av不卡在线观看| 日韩在线免费视频| 美女免费视频一区二区| 成人免费无毒在线观看网站| 免费播放美女一级毛片| 成年女人毛片免费播放视频m| 特级毛片全部免费播放a一级| 亚洲av激情无码专区在线播放| 国产在线国偷精品产拍免费| 亚洲欧洲日产国产综合网|