* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package utils;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import java.io.File;
import java.io.IOException;
import java.io.Writer;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Adam
*/
public class TemplateUtil {
/**
* 处理模板
* @param templateFile
* @param data
* @param out
*/
public static void process(File templateFile, Map<String, Object> data, Writer out) {
try {
Configuration configuration = new Configuration();
configuration.setDirectoryForTemplateLoading(templateFile.getParentFile());
configuration.setObjectWrapper(new DefaultObjectWrapper());
//<editor-fold defaultstate="collapsed" desc="添加自定义标签">
configuration.setSharedVariable("upper", new UpperDirective());
configuration.setSharedVariable("column", new ColumnDirective());
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="添加自定义方法">
data.put("url", new UrlMethod());
//</editor-fold>
Template template = configuration.getTemplate(templateFile.getName(), "utf-8");
template.process(data, out);
} catch (TemplateException ex) {
Logger.getLogger(TemplateUtil.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(TemplateUtil.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
out.flush();
out.close();
} catch (IOException ex) {
Logger.getLogger(TemplateUtil.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
/**
* 读取模板文件内容
* @param templateFilePath
* @return 模板文件内容
*/
public static String read(String templateFilePath) {
File templateFile = new File(templateFilePath);
String templateFileContent = null;
try {
templateFileContent = FileUtil.readFileToString(templateFile, "UTF-8");
} catch (IOException ex) {
Logger.getLogger(TemplateUtil.class.getName()).log(Level.SEVERE, null, ex);
}
return templateFileContent;
}
/**
* 写入模板文件内容
* @param templateFilePath
* @param templateFileContent
*/
public static String write(String templateFilePath, String templateFileContent) {
File templateFile = new File(templateFilePath);
try {
FileUtil.writeStringToFile(templateFile, templateFileContent, "UTF-8");
} catch (IOException ex) {
Logger.getLogger(TemplateUtil.class.getName()).log(Level.SEVERE, null, ex);
}
return templateFileContent;
}
}