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

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

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

    OMG,到底在尋找什么..................
    (構造一個完美的J2EE系統所需要的完整知識體系)
    posts - 198,  comments - 37,  trackbacks - 0
    轉貼地址:http://blog.csdn.net/chenyun2000/archive/2004/10/25/150612.aspx

    1、概述

    l???????? Velocity是一個簡單而且更加輕量級的工具,但是它沒有達到FreeMarker能夠做的許多任務,而且它的模板語言不是很強大

    l???????? 我們認為對于大多數應用程序,FreeMarkerVelocity工作更簡單,因為:

    ????????? 使用Velocity,你需要尋找特定工具或各種工作環境來一次次的解決典型的模板創作任務,結果會浪費更多時間

    ????????? 工作環境經常意味著在Velocity模板中直接使用Java對象的方法,這違反了簡單、無編程HTML設計的觀念

    ????????? 或者將表示任務移到控制器代碼中,這違反了MVC模式

    l???????? 使用FreeMarker,可以以out-of-the-box(如何翻譯確切?)的方式實現Velocity所能做的

    ?

    2、特性比較清單

    下面是一個使用FreeMarker能夠實現,而Velocity不能實現的不太全面的特性清單:

    1)數字和日期支持

    l???????? 可以對任何數字類型進行算術運算和比較,包括精度類型

    l???????? 可以比較和顯示(格式化)日期/時間值

    2)國際化

    l???????? 根據各種內建和定制的數字格式,格式化本地敏感的數字

    l???????? 根據各種內建和定制的日期格式,格式化本地敏感和時區敏感的日期

    l???????? 標識(變量名)可以包含非英語字符,如重音字符、阿拉伯字符、中文字符等

    3)循環處理

    l???????? 可以跳出循環

    l???????? 可以在循環外訪問循環體內的控制變量

    l???????? 可以測試是否達到最后一次循環

    4)模板級別的數組處理

    l???????? 可以使用類似[i]語法的索引方式訪問數組元素

    l???????? 可以查詢數組長度

    5)宏

    l???????? 宏可以有局部變量

    l???????? 可以遞歸調用宏,同樣可以在模板的后面定義要調用的宏

    l???????? 調用宏時,可以按位置或名字的方式傳遞參數

    l???????? 宏參數可以有缺省值,使得在調用時忽略參數也有效

    l???????? 調用的宏可以有嵌套的體內容(<@myMacro>body</@myMacro>),能夠在宏被調用時進行處理

    l???????? 宏是純變量的,可以基于表達式來執行宏,或者作為參數傳遞給另一個宏

    6)命名空間

    l???????? 可以對變量使用多命名空間,這對創建宏庫很重要,因為這可以避免應用程序中指定的變量和宏庫中變量的名字沖突

    7)使用內建的函數/操作符維護Java無關的stringlistmap

    l???????? 可以將字符串轉換成大/小寫、首字符大/小寫,對HTML、XMLRTF進行轉義處理,substring、split、查詢字符串長度、find/replace子串等等

    l???????? 通過索引訪問list元素,獲得子list,合并list,查詢list長度,對list排序

    l???????? 通過key變量訪問map元素,檢查map是否為空,獲得key或值的list

    8)揭示模板中的錯誤

    l???????? 當訪問一個未定義的變量,FreeMarker不會沉默;你可以配置FreeMarker來停止render模板顯示錯誤信息,或者跳過錯誤部分;無論哪種,FreeMarker會記錄問題(日志)

    l???????? 在寫錯指令名時,FreeMarker會拋出異常

    9)高級render控制

    l???????? 可以使用一組標記來封裝模板的一塊區域,以便在塊區中所有要修改的地方應用HTMLXML轉義(或其它使用FreeMarker表達式表示的轉換)

    l???????? FreeMarker有轉換器,它們是模板的一塊區域,在render時,通過轉換過濾;內建的轉換器包括空白字符壓縮、HTMLXML轉義;你可以實現自己的轉換器;當然轉換器可以嵌套

    l???????? 可以使用flush指令顯式的flush輸出

    l???????? 可以使用stop指令停止render

    10)文字

    l???????? 除了通常的字符串、數字和布爾值文字,也可以在模板中定義listmap文字

    l???????? 支持所有的Java轉義文字:\b、\t\n\f\r、\”\’\\,也支持\xXXXX使用UNICODE指定字符

    11)高級空白字符移除

    l???????? FreeMarker堅持移除各行只包含不輸出FreeMarker標記的空白字符

    l???????? 對于明顯要整修掉不需要的空白字符的指令來說,空白字符是個大問題

    12)集成其它技術

    l???????? 可以在模板中使用JSP標記庫

    l???????? 可以直接在Python工程中使用

    13)強大的XML轉換能力

    l???????? 2.3版本中,FreeMarker具有強大的新XML轉換能力,使得替代XSLT成為可能

    l???????? Velocity在這方面是無法真正競爭的,除非改進核心引擎,如支持宏庫映射到名字空間,宏中支持局部變量

    14)高級模板元程序

    l???????? 可以捕獲輸出的任何部分到context變量中

    l???????? 可以解釋任何context變量,如果它是一個模板定義

    l???????? 上述兩者的結合使用

    posted on 2006-04-19 17:59 OMG 閱讀(1238) 評論(0)  編輯  收藏 所屬分類: FreeMarker

    <2006年4月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    IT風云人物

    文檔

    朋友

    相冊

    經典網站

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: aⅴ在线免费观看| 国产成人精品曰本亚洲79ren| 亚洲熟女综合色一区二区三区| 国产一区二区免费在线| 中文字幕在线成人免费看| 亚洲第一页在线播放| 免费国产在线观看不卡| 久久这里只精品国产免费10| 456亚洲人成在线播放网站| 亚洲伦乱亚洲h视频| 色片在线免费观看| 国产福利电影一区二区三区,免费久久久久久久精 | 国产亚洲精品91| 久久精品国产亚洲沈樵| 成人免费福利电影| 久久精品成人免费网站| 亚洲人成色4444在线观看| 亚洲精品无码专区在线在线播放| 无人影院手机版在线观看免费| 亚美影视免费在线观看| 精品亚洲AV无码一区二区| 亚洲综合av永久无码精品一区二区| av免费不卡国产观看| 国产精品无码免费专区午夜| 中文字幕在线观看亚洲日韩| 国产亚洲真人做受在线观看| 免费永久国产在线视频| 99视频全部免费精品全部四虎| 72pao国产成视频永久免费| 亚洲欧洲精品成人久久曰| 久久综合亚洲鲁鲁五月天| 亚洲日韩国产精品乱| 女人张开腿给人桶免费视频| 十八禁无码免费网站| 国产一二三四区乱码免费| 豆国产96在线|亚洲| 亚洲精品伊人久久久久| 亚洲人成网站影音先锋播放| 亚洲精品乱码久久久久久久久久久久 | 69精品免费视频| 四虎影视无码永久免费|