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

          1、概述

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

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

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

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

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

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

          ?

          2、特性比較清單

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

          1)數(shù)字和日期支持

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

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

          2)國際化

          l???????? 根據(jù)各種內(nèi)建和定制的數(shù)字格式,格式化本地敏感的數(shù)字

          l???????? 根據(jù)各種內(nèi)建和定制的日期格式,格式化本地敏感和時區(qū)敏感的日期

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

          3)循環(huán)處理

          l???????? 可以跳出循環(huán)

          l???????? 可以在循環(huán)外訪問循環(huán)體內(nèi)的控制變量

          l???????? 可以測試是否達到最后一次循環(huán)

          4)模板級別的數(shù)組處理

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

          l???????? 可以查詢數(shù)組長度

          5)宏

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

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

          l???????? 調(diào)用宏時,可以按位置或名字的方式傳遞參數(shù)

          l???????? 宏參數(shù)可以有缺省值,使得在調(diào)用時忽略參數(shù)也有效

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

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

          6)命名空間

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

          7)使用內(nèi)建的函數(shù)/操作符維護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???????? 可以使用一組標記來封裝模板的一塊區(qū)域,以便在塊區(qū)中所有要修改的地方應用HTMLXML轉義(或其它使用FreeMarker表達式表示的轉換)

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

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

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

          10)文字

          l???????? 除了通常的字符串、數(shù)字和布爾值文字,也可以在模板中定義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 閱讀(1243) 評論(0)  編輯  收藏 所屬分類: FreeMarker

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           

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

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          IT風云人物

          文檔

          朋友

          相冊

          經(jīng)典網(wǎng)站

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 泗阳县| 肥西县| 五峰| 普洱| 麟游县| 霍邱县| 台南市| 桓台县| 灵山县| 亳州市| 红原县| 紫阳县| 密山市| 铜山县| 安阳市| 南澳县| 罗田县| 普格县| 黄冈市| 闸北区| 山西省| 甘肃省| 余姚市| 白朗县| 洪雅县| 鸡西市| 长宁县| 梨树县| 定日县| 东明县| 游戏| 黄冈市| 舟曲县| 唐河县| 赤城县| 达拉特旗| 秭归县| 民勤县| 崇明县| 静安区| 武隆县|