package com.zgzh.hse.utils;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class FreemarkerUtil {
public final static String TempDir = File.separator + "templates" + File.separator;
public static String generateOriginalString(String templateFilePath, Map<String, Object> datas)
throws IOException, TemplateException {
Configuration configuration = new Configuration(Configuration.VERSION_2_3_0);
// 设置默认编码
configuration.setDefaultEncoding("UTF-8");
// 设置模板所在文件夹
configuration.setClassForTemplateLoading(FreemarkerUtil.class, "/");
// 生成模板对象
Template template = configuration.getTemplate(templateFilePath);
// 将datas写入模板并返回
try (StringWriter stringWriter = new StringWriter()) {
template.process(datas, stringWriter);
stringWriter.flush();
return stringWriter.getBuffer().toString();
}
}
public static <T> String getRepString(String ftlName, List<T> dataLit)
throws IOException, TemplateException {
Map<String, Object> datas = new HashMap<>();
datas.put("records", dataLit);
String originStr = generateOriginalString(TempDir + ftlName, datas);
return originStr.replaceAll("\\n", "").replaceAll("\\r", "");
}
}
所搭配的模板
<?xml version="1.0" encoding="gb2312"?>
<RECORDS><#list records as record >
<RECORD>
<SAFECHART_ID><#if record.safechartId?? >${record.safechartId}</#if></SAFECHART_ID>
<ENTERPRISE_ID><#if record.enterpriseId?? >${record.enterpriseId}</#if></ENTERPRISE_ID>
<SAFECHART_NAME><#if record.safechartName?? >${record.safechartName}</#if></SAFECHART_NAME>
<COMPANY_CODE><#if record.companyCode?? >${record.companyCode}</#if></COMPANY_CODE>
<CREATE_TIME><#if record.createTimeStr?? >${record.createTimeStr}</#if></CREATE_TIME>
<CREATOR><#if record.creator?? >${record.creator}</#if></CREATOR>
<RECORD_STATUS><#if record.recordStatus?? >${record.recordStatus}</#if></RECORD_STATUS>
<IS_TEST><#if record.isTest?? >${record.isTest}</#if></IS_TEST>
</RECORD></#list>
</RECORDS>