在前后端分离的项目中, 一般不使用 freemarker (用它,做不到前后端分离)
后端使用模板引擎去套模板,当年使用最广泛的就是jsp,freemarker等等,同时内嵌一些后端提供的模板变量和一些逻辑操作。
然后前后端集成对接,遇到问题,前台返工,后台返工。
配置模块, 有配置, 响应给前端的是 一个
我的信息--预览简历, 因为 window.open
{
"successful": true,
"errorCode": null,
"errorMessage": null,
"data": {
"htmlTemplate": "\n\n\n \n PDF模版 \n\n\n\n\n\n\n\n\n\n \n \n \n \n\n \n \n \n \n \n \n \n \n 王欣乐\n \n 集团总部\n /\n IT产品服务部\n IT产品服务部助理软件工程师\n\n /\n\n 助理经理\n \n \n
\n\n\n \n\n\n \n \n \n\n \n \n \n \n \n \n \n \n \n 员工ID:\n\n 21187634\n\n\n\n \n \n \n \n 英文名:\n\n \n\n\n\n \n \n \n \n 性别:\n\n 男\n\n\n\n \n \n \n \n \n \n 出生日期:\n\n 1991-10-21\n\n\n\n \n \n \n \n 国籍/地区:\n\n 中国大陆\n\n\n\n \n \n \n \n 籍贯:\n\n 陕西省渭南市\n\n\n\n \n \n \n \n \n \n 民族:\n\n 汉族\n\n\n\n \n \n \n \n 政治面貌:\n\n 群众\n\n\n\n \n \n \n \n 特长信息:\n\n \n\n\n\n \n \n \n \n \n\n
\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n 加入华润日期:2019-10-16\n \n 加入集团部室/利润中心日期:2019-10-16 \n \n \n 加入本单位日期:2019-10-16\n \n 转正日期: \n \n
\n \n \n\n \n \n 主/兼岗 \n 生效日期 \n 操作 \n 原因 \n 职务 \n 职级 \n 部门 \n 业务单位 \n \n \n 主岗 \n 2019-10-16 \n 雇用 \n 一般正常雇用 \n 助理软件工程师 \n 助理经理 \n IT产品服务部 \n 集团总部 \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n 开始日期 \n 结束日期 \n 原单位 \n 工作所在地 \n 最后职务 \n \n \n 2019-07-22 \n 2019-10-15 \n 北京航星永智科技有限公司 \n 中国大陆 陕西 西安市 \n java开发工程师 \n \n \n 2019-02-17 \n 2019-07-19 \n 大唐移动通信有限公司 \n 中国大陆 陕西 西安市 \n java开发工程师 \n \n \n 2017-02-16 \n 2019-01-08 \n 上海汇纳科技股份有限公司 \n 中国大陆 陕西 西安 \n java开发工程师 \n \n
\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n 移动电话:17719770519\n \n\n 公司邮箱:[email protected]\n \n\n \n \n 办公电话:\n \n\n 家庭地址:\n \n\n \n \n \n
\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n 开始日期 \n 结束日期 \n 学历 \n 学位 \n 最高学历 \n 第一学历 \n 教育形式 \n 国家/地区 \n 学校 \n 第一专业 \n 第二专业 \n \n \n 2010-09-01 \n 2014-07-30 \n 大学本科 \n 学士 \n √ \n √ \n 全日制 \n 中国大陆 \n 西安石油大学 \n 机械设计制造及其自动化 \n \n \n
\n \n \n \n\n\n",
"infoBlockList": [{
"crcOrder": "0",
"crcInfoBlock": "000",
"crcInfoblockDescr": "头部信息"
}, {
"crcOrder": "1",
"crcInfoBlock": "001",
"crcInfoblockDescr": "个人基本信息"
}, {
"crcOrder": "2",
"crcInfoBlock": "crcExprHeader",
"crcInfoblockDescr": "华润工作经历头部"
}, {
"crcOrder": "3",
"crcInfoBlock": "002",
"crcInfoblockDescr": "华润工作经历"
}, {
"crcOrder": "4",
"crcInfoBlock": "003",
"crcInfoblockDescr": "非华润工作经历"
}, {
"crcOrder": "5",
"crcInfoBlock": "006",
"crcInfoblockDescr": "联系信息"
}, {
"crcOrder": "6",
"crcInfoBlock": "009",
"crcInfoblockDescr": "教育信息"
}]
}
}
@Override
public Map getResumeHtmlTemplate(Map map) throws Exception {
TemplateInfo templateInfo = this.getResume(map);
if(null == templateInfo || CollectionUtils.isEmpty(templateInfo.getCrcTemplateDetails())){
throw new BaseException("无简历数据");
}
Map dataMap = new LinkedHashMap();
dataMap.put("data",JSONObject.parseObject(JSONObject.toJSONString(templateInfo.getCrcTemplateDetails().get(0))));
String templateFileName = "resumeTemplate.ftl";
String htmlTemplate = digitalSignServiceImpl.freeMarkerRender(dataMap,templateFileName);//根据freemarker模板渲染html文件(即将数据渲染到模板里, 并返回html字符串,最终展示在 v-html的组件里),且返回html内容(Template Configuration就是freemarker包下的类)
//重新组装报文
List
/**
* freemarker 配置
*/
private static Configuration freemarkerCfg = null;
/**
* freemarker渲染html
* @param dataMap {"data":"实体类的json 在模板页面可以直接 ${ data.name} 使用"}
* @param templateFileName
* @return
*/
@Override
public String freeMarkerRender(Map dataMap, String templateFileName) throws Exception {
Writer out = new StringWriter();
try {
// 获取模板,并设置编码方式
this.setFreemarkerCfg();
Template template = freemarkerCfg.getTemplate(templateFileName,"UTF-8");
//将合并后的数据和模板写入到流中,这里使用的字符流
template.process(dataMap, out);//dataMap即查询数据库得到的map转为json {"data":"实体类的json 在模板页面可以直接 ${ data.name} 使用"}
out.flush();
return out.toString();
} catch (Exception e) {
logger.error("处理freemarker渲染html失败",e);
throw e;
} finally {
try {
out.close();
} catch (Exception e) {
logger.error("处理freemarker渲染html,关闭流失败",e);
throw e;
}
}
}
/**
* 设置freemarkerCfg
*/
private void setFreemarkerCfg() {
//freemarker的模板目录
freemarkerCfg = new Configuration(Configuration.VERSION_2_3_28);
try {
//freemarkerCfg.setDirectoryForTemplateLoading(new ClassPathResource("template").getFile());
//freemarkerCfg.setDirectoryForTemplateLoading(new File("D:/template"));
freemarkerCfg.setClassForTemplateLoading(this.getClass(),"/template");
} catch (Exception e) {
logger.error("处理freemarker的模板目录错误",e);
}
}
\n\n\n \n PDF模版 \n\n\n\n\n\n\n\n\n\n \n \n \n \n\n \n \n \n \n \n \n \n \n 王欣乐\n \n 集团总部\n /\n IT产品服务部\n IT产品服务部助理软件工程师\n\n /\n\n 助理经理\n \n \n
\n\n\n \n\n\n \n \n \n\n \n \n \n \n \n \n \n \n \n 员工ID:\n\n 21187634\n\n\n\n \n \n \n \n 英文名:\n\n \n\n\n\n \n \n \n \n 性别:\n\n 男\n\n\n\n \n \n \n \n \n \n 出生日期:\n\n 1991-10-21\n\n\n\n \n \n \n \n 国籍/地区:\n\n 中国大陆\n\n\n\n \n \n \n \n 籍贯:\n\n 陕西省渭南市\n\n\n\n \n \n \n \n \n \n 民族:\n\n 汉族\n\n\n\n \n \n \n \n 政治面貌:\n\n 群众\n\n\n\n \n \n \n \n 特长信息:\n\n \n\n\n\n \n \n \n \n \n\n
\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n 加入华润日期:2019-10-16\n \n 加入集团部室/利润中心日期:2019-10-16 \n \n \n 加入本单位日期:2019-10-16\n \n 转正日期: \n \n
\n \n \n\n \n \n 主/兼岗 \n 生效日期 \n 操作 \n 原因 \n 职务 \n 职级 \n 部门 \n 业务单位 \n \n \n 主岗 \n 2019-10-16 \n 雇用 \n 一般正常雇用 \n 助理软件工程师 \n 助理经理 \n IT产品服务部 \n 集团总部 \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n 开始日期 \n 结束日期 \n 原单位 \n 工作所在地 \n 最后职务 \n \n \n 2019-07-22 \n 2019-10-15 \n 北京航星永智科技有限公司 \n 中国大陆 陕西 西安市 \n java开发工程师 \n \n \n 2019-02-17 \n 2019-07-19 \n 大唐移动通信有限公司 \n 中国大陆 陕西 西安市 \n java开发工程师 \n \n \n 2017-02-16 \n 2019-01-08 \n 上海汇纳科技股份有限公司 \n 中国大陆 陕西 西安 \n java开发工程师 \n \n
\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n 移动电话:17719770519\n \n\n 公司邮箱:[email protected]\n \n\n \n \n 办公电话:\n \n\n 家庭地址:\n \n\n \n \n \n
\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n 开始日期 \n 结束日期 \n 学历 \n 学位 \n 最高学历 \n 第一学历 \n 教育形式 \n 国家/地区 \n 学校 \n 第一专业 \n 第二专业 \n \n \n 2010-09-01 \n 2014-07-30 \n 大学本科 \n 学士 \n √ \n √ \n 全日制 \n 中国大陆 \n 西安石油大学 \n 机械设计制造及其自动化 \n \n \n
\n \n \n \n\n\n",