这里介绍下在类似 Spring+FreeMarker 的架构中如何在FreeMarker中访问Java中的静态方法以及静态变量

一、首先为了方便以及可复用我们创建一个工具类

/**
* FreeMarker Utils.
*
* @author chenxinyu
*/
public abstract class FreeMarkerUtils { /**
* init for static classes and fields.
*
* @param model model
*/
public static void initStatics(final Model model) {
// you can also create the Version like: new Version("2.3.27");
BeansWrapper wrapper = new BeansWrapper(new Version(2, 3, 27));
TemplateModel statics = wrapper.getStaticModels();
model.addAttribute("statics", statics);
} }

这里稍作解释:

`wrapper.getStaticModels()` 会返回一个 `TemplateHashModel` ,它会利用反射公开所有的静态方法和静态成员变量,包括 final 和 非final 的
之后我们将这个 `HashModel` 添加至 Spring 的 Model 参数里面。 二、之后在我们的 `Controller` 里面调用如上代码即可:
FreeMarkerUtils.initStatics(model);
三、现在我们就可以在 FreeMarker 的 `.ftl` 文件中调用静态方法和静态变量了:

1.访问静态变量:
${statics["com.springboot.constants.TestConstants"].NAME}

引号中间填入静态变量所在的类路径,中括号后面使用 . 来调用相应变量就行。

2.访问静态方法:
I.首先我们使用 <#assign> 来定义下所要调用的类:
<#assign DateTimeUtils=statics['com.springboot.util.DateTimeUtils']>
II.之后就可以尽情调用了:
${DateTimeUtils.formatDateTime(datetime)}
虽然网上搜罗出过不少其他解决方案的版本,但自己在沿用的过程中出现过些许不同的坑,于是重新整理了这套可行、可用,且暂未过期的方案,以前所使用的 `new BeansWrapper()` 以及 `BeansWrapper().getDefaultInstance()` 现在均已过期(被标记为 @
Deprecated),新的 BeansWrapper 需要利用 BeansWrapperBuilder 来创建。
												

最新文章

  1. Javascript的setTimeOut()和setInterval()的定时器用法
  2. python学习之深入
  3. Random Javascript code snippets
  4. java在继承中父类的成员变量是否会被子类所覆盖
  5. phpstorm+Xdebug断点调试PHP
  6. OAF_架构MVC系列1 - MVC的概述(概念)
  7. LevelDb系列之简介
  8. ORMBase对象/关系型数据库映射在MVC中的应用(二)
  9. 使用 Python 开始游戏开发
  10. HDU 3499 Flight spfa+dp
  11. HBase全分布安装配置
  12. Linux 常见命令示例【一】
  13. Mycat的读写分离
  14. 聊天斗图神器aidou mac中文版
  15. WORDPRESS博客完美更换网站空间服务器的方法
  16. [PHP]算法-二叉树中和为某一值的路径的PHP实现
  17. C++笔试题总结
  18. Xcode提交图片出错:Commit failed not under version control (1)
  19. chrome扩展写法
  20. 负margin

热门文章

  1. MySQL查询时区分大小写(转)
  2. 【Echarts】百度Echarts的使用入门+两个简单的小例子+心得
  3. Bootstrap幻灯片
  4. IIS 7 网站权限问题
  5. css字体font-family
  6. Spring Ajax一个简单样例
  7. 倍福TwinCAT(贝福Beckhoff)应用教程12.3 TwinCAT控制松下伺服 NC进阶
  8. Win7如何修改开机动画
  9. 可伸缩Web架构与分布式系统(1)
  10. Web service--百度百科