ClassTemplateLoader loader = new ClassTemplateLoader(this.getClass().getClassLoader(), "ftl");
/**
* 生成HTML字符串
*
* @param filePath 请求路径
* @param fileName 模板名称
* @param data 模板数据
* @return HTML字符串
*/
public static String genarateHtml(ClassTemplateLoader filePath, String fileName, Map<String, String> data) {
if (data == null || data.isEmpty()) {
return "";
}
Configuration configuration = new Configuration(Configuration.VERSION_2_3_21);
//模板数据
Map<String, Object> rootMap = new HashMap<>(1);
List<Map<String, String>> pageAll = new ArrayList<>();
pageAll.add(data);
rootMap.put("pageAll", pageAll);
//模板路径
//String basePath = iRequest.getAttribute(SyncConstant.BASE_PATH) + SyncConstant.FTL_PATH;
//String basePath = Thread.currentThread().getContextClassLoader().getResource("").toString().replace("file:/", "").replace("/WEB-INF/classes/", "") + SyncConstant.FTL_PATH;
//返回结果
String result = null;
StringWriter stringWriter = new StringWriter();
try {
configuration.setTemplateLoader(filePath);
configuration.setDefaultEncoding(Constants.ENCODED_UTF_8);
Template template = configuration.getTemplate(fileName);
template.setEncoding(Constants.ENCODED_UTF_8);
template.process(rootMap, stringWriter);
result = stringWriter.toString();
stringWriter.flush();
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
} finally {
close(stringWriter);
}
System.out.println("生成的html"+result);
return result;
}
springboot中使用freemarker模板引擎生成html字符串时出现路径错误的解决方案
最新推荐文章于 2023-08-05 09:58:15 发布