更新时间:2022-08-13 11:12:19
重写Freemarker的模板加载器即可:
package cn.com.aweb.vote.test.other; import java.io.IOException; import java.io.Reader; import java.io.StringReader; import java.util.HashMap; import java.util.Map; import freemarker.cache.TemplateLoader; public class StringTemplateLoader implements TemplateLoader { private static final String DEFAULT_TEMPLATE_KEY = "_default_template_key"; private Map templates = new HashMap(); public StringTemplateLoader(String defaultTemplate) { if (defaultTemplate != null && !defaultTemplate.equals("")) { templates.put(DEFAULT_TEMPLATE_KEY, defaultTemplate); } } public void AddTemplate(String name, String template) { if (name == null || template == null || name.equals("") || template.equals("")) { return; } if (!templates.containsKey(name)) { templates.put(name, template); } } public void closeTemplateSource(Object templateSource) throws IOException { } public Object findTemplateSource(String name) throws IOException { if (name == null || name.equals("")) { name = DEFAULT_TEMPLATE_KEY; } return templates.get(name); } public long getLastModified(Object templateSource) { return 0; } public Reader getReader(Object templateSource, String encoding) throws IOException { return new StringReader((String) templateSource); } }
测试类: package cn.com.aweb.vote.test.other; import java.io.StringWriter; import java.util.HashMap; import java.util.Map; import freemarker.template.Configuration; import freemarker.template.Template; public class Test{ public static void main(String[] args) throws Exception { Configuration cfg = new Configuration(); cfg.setTemplateLoader(new StringTemplateLoader("hello:${user}")); cfg.setDefaultEncoding("UTF-8"); Template template = cfg.getTemplate(""); Map root = new HashMap(); root.put("user", "lunzi"); StringWriter writer = new StringWriter(); template.process(root, writer); System.out.println(writer.toString()); } }
附件是 freemarker 学习 pdf