FreeMarker解析字串模板

來源:互聯網
上載者:User
重寫Freemarker的模板載入器即可:
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);

}
}
測試類別:
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;

import freemarker.template.Configuration;
import freemarker.template.Template;

public class Test {

/**
* @param args
*/
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());
}

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.