freemarker空值的多種處理方法


默認情況下,freemarker的變量必須有值,如果沒有被賦值的變量在頁面上使用就會拋出異常,出錯的信息都會顯示在頁面上。 
解決辦法:


方法一、我們可以在頁面上使用freemarker變量時 以 ${xxx?if_exists} 來處理空值的情況,或采用默認值的方法避免此類問題。但每個freemarker變量都這樣處理確實比較讓人心煩,請看以下方法。
 
方法二、在類路徑下 加入 freemarker.properties 文件,里面配置 classic_compatible=true。
 
方法三、通過freemarker.template.Configuration的 config.setClassicCompatible(true);通過源碼我們看到,其實方法二、方法三是思想是一致的,只是實現方法不同而已。如果應用中已經存在了 freemarker.properties 並配置了其他的屬性,可以在這里配置,否則推薦使用方法三,畢竟沒有每個應用的配置文件實在是都夠多了。
 
方法四、在ftl文件內引入 <!--#setting classic_compatible=true-->。
 
其他關於在spring中的配置這里就省略。現在的項目中沒有用到。
 
總結:方法四是需要在每個需要這樣處理的頁面都要引入的,比較麻煩,、還是選擇使用 方法二、方法三好了。但是方法二、方法三也不是萬能的。例如我在action中定義一個MyBean類的對象為 myBean,MyBean中有Comp屬性。在頁面上就要 用如下語句使用:${myBean.comp},這里myBean可能為null,comp也可能為null。這時候 就要使用方法一了,${(myBean.comp)!} 或 ${(myBean.comp)?if_exists}。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM