1. 程式人生 > >如何使修改的freemarker模板實時生效

如何使修改的freemarker模板實時生效

       很多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提交到線上去,不然每次請求都會重新拉模板,對頁面效能有影響。