2 编写与页面对应的 xxx.ftl文件
以下是案例
一 . 请求的html页面
点击不同活动,在 url 上拼接不同 id
<p><a href="#/promotion_detail/{{item.id}}">{{item.title}}</a></p>
对应的路由设置
when("/promotion_detail/:id", {
templateUrl: function($routeParams){
return "promotion_showDetail.action?id=" + $routeParams.id;
}
})
二 模板
在WEB-INF 下穿件文件夹 freemarker_templates 编写(xxx.ftl)
<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=${promotion.titleImg} 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>
三 : 模块代码
@Action(value = "promotion_showDetail")
public String showDetail() throws Exception {
// 先判断 id 对应html 是否存在,如果存在 直接返回
String htmlRealPath = ServletActionContext.getServletContext()
.getRealPath("/freemarker");
File htmlFile = new File(htmlRealPath + "/" + model.getId() + ".html");
// 如果html文件不存在 ,查询数据库,结合freemarker模板生成 页面
if (!htmlFile.exists()) {
Configuration configuration = new Configuration(
Configuration.VERSION_2_3_22);
configuration.setDirectoryForTemplateLoading(new File(
ServletActionContext.getServletContext().getRealPath(
"/WEB-INF/freemarker_templates")));
// 获取模板对象
Template template = configuration
.getTemplate("promotion_detail.ftl");
// 动态数据
Promotion promotion = WebClient
.create(Constants.BOS_MANAGEMENT_URL
+ "/bos_management/services/promotionService/promotion/"
+ 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 OutputStreamWriter(
new FileOutputStream(htmlFile), "utf-8"));
}
// 存在 ,直接将文件返回
ServletActionContext.getResponse().setContentType(
"text/html;charset=utf-8");
FileUtils.copyFile(htmlFile, ServletActionContext.getResponse()
.getOutputStream());
return NONE;
}