ALL is Well!

          敏捷是一條很長的路,摸索著前進(jìn)著

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            30 隨筆 :: 23 文章 :: 71 評論 :: 0 Trackbacks
          本文為原創(chuàng),歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明出處BlogJava

          默認(rèn)情況下,freemarker的變量必須有值,如果沒有被賦值的變量在頁面上使用就會拋出異常,出錯(cuò)的信息都會顯示在頁面上,讓人感覺不爽(開發(fā)時(shí)還可以忍忍)。
           
          解決辦法:

          方法一、我們可以在頁面上使用freemarker變量時(shí) 以 ${xxx?if_exists} 來處理空值的情況,或采用默認(rèn)值的方法避免此類問題。但每個(gè)freemarker變量都這樣處理確實(shí)比較讓人心煩,請看以下方法。

          方法二、在類路徑下 加入 freemarker.properties 文件,里面配置 classic_compatible=true。

          方法三、通過freemarker.template.Configuration的 config.setClassicCompatible(true);通過源碼我們看到,其實(shí)方法二、方法三是思想是一致的,只是實(shí)現(xiàn)方法不同而已。如果應(yīng)用中已經(jīng)存在了 freemarker.properties 并配置了其他的屬性,可以在這里配置,否則推薦使用方法三,畢竟沒有每個(gè)應(yīng)用的配置文件實(shí)在是都夠多了。

          方法四、在ftl文件內(nèi)引入 <!--#setting classic_compatible=true-->。

          其他關(guān)于在spring中的配置這里就省略。現(xiàn)在的項(xiàng)目中沒有用到。

          總結(jié):方法四是需要在每個(gè)需要這樣處理的頁面都要引入的,比較麻煩,、還是選擇使用 方法二、方法三好了。但是方法二、方法三也不是萬能的。例如我在action中定義一個(gè)MyBean類的對象為 myBean,MyBean中有Comp屬性。在頁面上就要 用如下語句使用:${myBean.comp},這里myBean可能為null,comp也可能為null。這時(shí)候 就要使用方法一了,${(myBean.comp)!} 或 ${(myBean.comp)?if_exists}。

          posted on 2010-11-17 13:54 李 明 閱讀(2331) 評論(0)  編輯  收藏 所屬分類: Freemarker
          主站蜘蛛池模板: 桃源县| 潮安县| 桑植县| 瓮安县| 阜宁县| 绍兴市| 胶南市| 华安县| 嘉善县| 奎屯市| 黄石市| 镇赉县| 九龙县| 常州市| 常山县| 云阳县| 出国| 镇坪县| 奉新县| 华安县| 澄城县| 富源县| 洛扎县| 浦县| 峨边| 芜湖市| 大方县| 佛冈县| 乌兰浩特市| 天长市| 义乌市| 永嘉县| 营口市| 呼和浩特市| 郑州市| 成武县| 历史| 临夏县| 乐业县| 鄂托克前旗| 韶关市|