【转载】FreeMarker解析字符串模板
来源:互联网 发布:时下最流行的网络语言 编辑:程序博客网 时间:2024/05/22 12:08
重写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