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