<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 不做浮躁的人 閱讀(1275) 評論(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)

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 女人被免费视频网站| 久久久久久国产精品免费免费| 四虎影视在线永久免费看黄| 亚洲天堂2017无码中文| 18禁超污无遮挡无码免费网站国产| 亚洲激情视频网站| 久久精品免费全国观看国产| 亚洲视频在线观看不卡| www视频在线观看免费| 亚洲制服丝袜一区二区三区| 激情亚洲一区国产精品| 99久久免费国产特黄| 国产精品亚洲片在线| 国产一级片免费看| 精品亚洲aⅴ在线观看| 久久久久久免费视频| 在线观看免费亚洲| 亚洲最大av无码网址| 日本视频免费高清一本18| 亚洲美女色在线欧洲美女| 无码专区永久免费AV网站| 亚洲爆乳精品无码一区二区| 亚洲电影日韩精品| 免费国产黄网站在线观看| 精品久久亚洲中文无码| 国产乱子伦精品免费女| a级毛片在线免费看| 亚洲人成在线播放| 免费又黄又爽又猛的毛片| 99视频免费在线观看| 亚洲欧洲日韩国产| 亚洲黄黄黄网站在线观看| 免费一级毛片在线播放视频| 最新国产成人亚洲精品影院| 亚洲国产精品自产在线播放| 免费视频一区二区| 久久亚洲色WWW成人欧美| 亚洲精品乱码久久久久66| 毛片a级毛片免费观看免下载| 国产精品九九久久免费视频| 亚洲av无码不卡久久|