Freemarker模版缓存问题
一个资讯项目,需要静态化,使用的freemarker
获取模版的方法
public static Template getTemplate(String contextPath){ Configuration cfg = new Configuration(); try { cfg.setDirectoryForTemplateLoading(new File(contextPath + FTL_PATH)); } catch (IOException e) { return null; } cfg.setObjectWrapper(new DefaultObjectWrapper()); cfg.setDefaultEncoding("UTF-8"); cfg.setTemplateUpdateDelay(0); cfg.setCacheStorage(new freemarker.cache.MruCacheStorage(100, 2500)); Template temp = null; try { temp = cfg.getTemplate(FTL_NEWS_DETAIL); } catch (IOException e) { return null; } return temp; }
循环调用这个
for (News news : list) { ....... 省略填充数据过程 ....... writer = new OutputStreamWriter(new FileOutputStream(f), "UTF-8"); getTemplate(contextPath).process(root, writer); ....... 生成html文件 }
控制台日志:
2011-12-07 Could not find template in cache, creating new one;..... 2011-12-07 Compiling FreeMarker template detail.ftl[zh_CN,UTF-8,parsed] ....
我的要求是:如何设置,让模版缓存,而不提示这种:
Could not find template in cache
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
ok,我试试!
全局实例化是不是将Configuration cfg = new Configuration();放到getTemplate这个静态方法之外
是的
Configuration 对象不应该在每次 getTemplate 的时候都重新实例化。
应该在全局实例化后,以后直接调用。