freemarker模板引擎的功能,不能说是最优的,只能说:在某些业务场景,freemarker相比于其他技术会更好。
在模板处理方面,freemarker可以有很多种形式,最常见的方式就是将模板文件放在一个系统统一的文件夹目录下面。
如下形式:
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(new File("templates"));
现在我碰到这样的业务场景:模板是基于配置的形式存在,模板可以随时在页面动态修改。
这时我就想把我的模板存放到数据库中。
基于可行性调查与分析,freemarker是可以做到的。
我们使用StringTemplateLoader来加载模板内容。
主要的代码实现如下所示:
String result = "";
Configuration cfg = new Configuration();
cfg.setNumberFormat("0.##");
cfg.setClassicCompatible(true);
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("name", "Brady");
StringTemplateLoader stringLoader = new StringTemplateLoader();
String templateContent="hello ${name}!";
stringLoader.putTemplate("myTemplate",templateContent);
cfg.setTemplateLoader(stringLoader);
Template template = cfg.getTemplate("myTemplate","utf-8");
Writer writer = new StringWriter();
template = process(paramMap, writer);
resultStr = writer.toString();
writer.flush();
return result;
在模板处理方面,freemarker可以有很多种形式,最常见的方式就是将模板文件放在一个系统统一的文件夹目录下面。
如下形式:
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(new File("templates"));
现在我碰到这样的业务场景:模板是基于配置的形式存在,模板可以随时在页面动态修改。
这时我就想把我的模板存放到数据库中。
基于可行性调查与分析,freemarker是可以做到的。
我们使用StringTemplateLoader来加载模板内容。
主要的代码实现如下所示:
String result = "";
Configuration cfg = new Configuration();
cfg.setNumberFormat("0.##");
cfg.setClassicCompatible(true);
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("name", "Brady");
StringTemplateLoader stringLoader = new StringTemplateLoader();
String templateContent="hello ${name}!";
stringLoader.putTemplate("myTemplate",templateContent);
cfg.setTemplateLoader(stringLoader);
Template template = cfg.getTemplate("myTemplate","utf-8");
Writer writer = new StringWriter();
template = process(paramMap, writer);
resultStr = writer.toString();
writer.flush();
return result;