在與朋友討論中,說到jf中的FreemarkerRender不能讀到jar中的文件,查看jf源碼是沒有加入Freemarker的ClassTemplateLoder.讀不到jar包中的靜態文件,嘗試着本身改進了下這個render。 前端
把jfinal源碼從github clone下來,準備開始亂搞了,嘿嘿。 java
找到com.jfinal.render中FreeMarkerRender,在init方法,即初始化Freemarker方法中加入幾行代碼。必定要在 git
config.setServletContextForTemplateLoading(servletContext, "/");這行代碼以後加入咱們定義的 ClassTemplateLoader
加入代碼: github
TemplateLoader tl=config.getTemplateLoader(); ClassTemplateLoader ctl=new ClassTemplateLoader(FreeMarkerRender.class, "/"); MultiTemplateLoader multi=new MultiTemplateLoader(new TemplateLoader[]{tl,ctl}); config.setTemplateLoader(multi);第一句是獲得以前的TemplateLoader,就是以前是的servletContextTemplateLoading的加載器,而後在建立咱們自定的classTemplateLoader,最後再包裝一塊兒給freemarker
freemarker自身就支持多個TemplateLoder,這樣就能夠先從咱們WebRoot下查找靜態文件,若是找不到再從咱們jar包中查找靜態文件。最後把本身改進的jfinal打包,經過前端頁面標籤引用jar中的ftl文件,最後測試經過啦,前端能正常顯示。 測試
具體改進能夠查看 https://github.com/kyle1970 spa
@JFinal .net