Jfinal中FreemarkerRender小改進

    在與朋友討論中,說到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

相關文章
相關標籤/搜索