很多web系统的前端显示模板都用freemrker。由于freemarker没有像java那样方便直观的进行debug调试,开发过程中经常遇到写一些逻辑比较复杂的模板的时候,需要反复的试错修改,每次修改之后都需要部署再验证,导致开发效率比较低。由于freemarker默认开启了模板缓存机制,不管是直接修改部署war包里的ftl文件,还是修改代码ftl文件用IntellijIDEA进行热部署,修改后的ftl代码都不会直接生效。但是如果关闭freemarker的模板缓存,直接修改tomcat容器使用的ftl文件,那么修改的那些代码就会直接生效。

       具体步骤如下:

       1.找到项目里的freemarker.propertties文件,设置里面的配置项template_update_delay=0,这样就关闭了模板缓存。如果项目里没有则在/src/main/resources/目录下加上,并在freemarker.properties文件里配置template_update_delay=0。

       2.修改tomcat容器使用的war包里对应的ftl文件,保存后刷新页面,可以看到这些修改的代码直接生效了,再不用重新部署。

        具体点说,如果没有使用热部署工具,比如Eclipse+tomcat,那么找到tomcat部署时使用的war包,找到\WEB-INF文件夹里想修改的ftl文件,修改后保存就能直接生效。调试好之后把该文件复制替换项目里对应文件的代码(千万别忘了,因为下次部署的时候重新生成war包,你辛辛苦苦修改的ftl就没了)

;如果是热部署工具IntellijIDEA,那么直接修改项目里的ftl代码然后update一下,就直接生效了。

       3.需要注意的一点是不要把修改后freemarker.propertties提交到线上去,不然每次请求都会重新拉模板,对页面性能有影响。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐