Freemarker渲染視圖採用的是一個 模型+數據 = 頁面 的方式,這也是模板渲染引擎的通用模式,對於freemarker渲染頁面的時候一些特殊的數據格式轉換、隨機數獲取等需求,如果很難通過freemarker本身的標籤完成,可以通過調用java靜態方法來完成。前提是這個方法必須是靜態。允許傳遞參數。
實現這個需求,使用的便是freemarker的BeansWrapper這個類,他借用TemplateHashModel可以從web容器中獲取指定類名的bean並通過傳統的如spring的ModelMap.setAttribute方式傳遞給ModelMap,然後頁面可以根據指明的名稱,使用$符號調用即可。
舉個例子:
頁面調用:
方法的調用通過反射去執行,但是如果這個方法的參數是一個泛型T怎麼辦呢?如何調用enum呢?
在下面找答案
http://freemarker.sourceforge.net/docs/pgui_misc_beanwrapper.html#beanswrapper_hash