freemarker模板使用
阿新 • • 發佈:2018-12-01
1.匯入外掛到eclipse安裝目錄dropins
2.在需要使用模板的專案的web-inf資料夾下建立資料夾儲存模板檔案
3.模板編寫,簡單模板
<link rel="stylesheet" type="text/css" href="css/promotion_detail.css">
<div class="container promotions" >
<div class="col-md-2 prolist">
<h5 class="title"><a href="#/promotion" ><strong>返回促銷列表</strong></a></h5>
<img src="images/pro.jpg" class="img-responsive">
</div>
<div class="col-md-10 procontent">
<h5 class="title">${promotion.title}</h5>
<div class="intro">
<p>活動範圍:${promotion.activeScope}</p >
<p>活動時間: ${promotion.startDate?string(yyyy-MM-dd)} -
${promotion.endDate?string(yyyy-MM-dd)}</p>
</div>
<div class="partline clearfix"></div>
<div class="promotionbox">
${promotion.description}
</div >
</div>
</div>
4.建立模板生產資料夾
5.查詢資料庫,生產資料,寫入模板檔案,生產靜態頁面(結合AngularJS路由)
5.1 頁面路徑傳遞查詢資料的id
5.2路由頁面接收引數
5.3編寫action
@Action(value="promotion_html")
public String creatHtml() throws IOException, Exception {
//1.獲取寫出模板檔案地址
String html = ServletActionContext.getServletContext().getRealPath("promotion");
//2.建立檔案
File htmlFile = new File(html,model.getId()+".html");
if(!htmlFile.exists()) {
//1.獲取模板存放路徑
String file = ServletActionContext.getServletContext().getRealPath("WEB-INF/freemarkertemplate");
//2.設定版本
Configuration configuration = new Configuration(
Configuration.VERSION_2_3_22);
//3.載入模板地址
configuration.setDirectoryForTemplateLoading(new File(file));
//4.載入模板
Template template = configuration.getTemplate("freemarker.ftl");
//5.查詢資料,呼叫webservice服務獲取其他伺服器資料
Promotion promotion = WebClient.create("http://localhost:8081/bos_management/services/promotionService/getPromotion/"+model.getId()).accept(MediaType.APPLICATION_JSON).get(Promotion.class);
Map<String, Object> parameterMap = new HashMap<String, Object>();
parameterMap.put("promotion", promotion);
template.process(parameterMap,new FileWriter(htmlFile));
}
//6.把生產頁面響應回頁面
FileUtils.copyFile(htmlFile, ServletActionContext.getResponse().getOutputStream());
return NONE;
}