相信很多小伙伴在工作中都会遇到一个这样的问题,就是用jsp写页面时,jsp代码修改后,点击保存,页面一刷新,就可以把修改内容同步到页面了,不需要重启服务器;但是当我们用freemarker的ftl写页面时,却发现没有这么便利,ftl页面每次的修改都要重启服务器,页面才能显示最新修改内容。

这个问题,无疑是让程序员最绝望的,因为我们都知道,页面的修改是很频繁的,可能一个样式的参数调试,就要调很多遍,这种情况下,每次都重启服务器,工作效率是大打折扣的。

但是,不要慌,有问题,就会有解决办法。

如何解决呢????

先提个问题,是不是我们每次修改保存ftl文件,修改的内容都会立即更新到模板文件中呢?

答案:

为什么呢?不是应该立即更新吗?

当然不是,如果我们每次修改都会去更新模板文件,那模板文件的读取频次会很高,这样会降低系统的负载。

所以freemarker设计者在创作时,就考虑到了这个问题,并且通过缓存来解决这个问题。

1.解决思路:
freemarker将模版文件的内容进行缓存,当处理某个模版时,freemarker直接从缓存中返回对应的 Template 对象,并有一个默认的机制来保证该模版对象是跟模版文件的同步。

2.具体操作:
在freemarker中有一个延迟更新template_update_delay 属性,它是用来指定更新模板文件的间隔时间的。

如果template_update_delay = 3600 ,那么我们在ftl文件修改的内容,保存,并且过了3600毫秒,也就是3.6秒后,它才把修改内容更新到模板文件中。

但是如果我们不想等,想保存后,在页面就能看到修改后的效果,那就可以在freemarker.properties配置文件中,把这个template_update_delay属性的值设置为0。

也就是:
template_update_delay = 0

这样就可以解决问题了。

实战项目示例:

java项目中ftl文档的编写语法_java