1. 程式人生 > >freemarker模板使用

freemarker模板使用

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;
    }