要获取模板,一般要设置模板路径,否则freemarker会使用默认的javaweb的路径
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(new File("/where/you/store/templates"));
cfg.setObjectWrapper(new DefaultObjectWrapper());
/* 而以下代码你通常会在一个应用生命周期中执行多次*/
/*获取或创建一个模版*/
Template temp = cfg.getTemplate("test.ftl");
根据以上,我的项目中有如下设置:
public synchronized static String getTemplate(String fileName, Map root) throws Exception{
//从freemarker中获取所有配置
config = (Configuration)FreeMarkerRender.getConfiguration().clone();
try {
//设置模板路径
config.setDirectoryForTemplateLoading(new File(PathKit.getWebRootPath()+"/WEB-INF/view/assets/ftl/"));
config.setObjectWrapper(new DefaultObjectWrapper());
} catch (IOException e) {
}
Template temp = config.getTemplate(fileName);
if (temp == null) {
return "";
}
StringWriter result = new StringWriter();
temp.process(root, result);
//System.out.println(result.toString());
return result.toString();
}