Freemarker中页面直接可以运用的内置对象
2016-05-26
FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
freemarker中页面直接可以使用的内置对象有以下几种:
用法:${Request["atrributeName"]},${Request.atrributeName}这样是直接在页面输出属性值,相当于request.getAtrribute("atrributeName");如果要对这个值进行判断使用如下格式:<#if Request["atrributeName"]="edit">
对于list等复杂的属性值,也可以${Request["atrributeName"]}、${Request.atrributeName}两种方式联合使用,例如:
@RequestMapping("cashierSum")
public ModelAndView cashierSum(HttpServletRequest request,HttpSession session) {
ModelAndView mv = new ModelAndView("/report/cashierSumList");
String substoreid = String.valueOf(session.getAttribute("substoreid"));
String startDate = request.getParameter("start_date");
String endDate = request.getParameter("end_date");
Map<String, Object> params = new HashMap<String, Object>();
params.put("startDate", startDate);
params.put("endDate", endDate);
params.put("substoreid", substoreid);
List<Map<String, Object>> payClasses=this.reportService.getAllPayClass(substoreid);
mv.addObject("payClasses", payClasses);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
if (request.getParameter("searchFlag") != null) {
list = this.reportService.getCashierSumList(params);// 收银报表列表
mv.addObject("list", list);
}
return mv;
}
前端页面显示:
<#if list ??>
<#list list as tmp>
<tr>
<td>${tmp_index+1}</td>
<td>${(tmp.the_date?string("yyyy-MM-dd"))!}</td>
<td>${tmp.am_name}</td>
<td>${tmp.the_man}</td>
<td>${tmp.user_name!}</td>
<#if payClasses ??>
<#list payClasses as tmp2>
<#assign name="payName${tmp2_index}"/>
<td><span style="color:#ff0000;">${Request.list[tmp_index][name]}</span></td>
</#list>
</#if>
</tr>
</#list>
</#if>
用法:用法参照Request的用法。
用法:用法参照Request的用法。
用法:${RequestParameters["atrributeName"]}等同于request.getParameter("atrributeName");
用法:${Parameters["method"]}
但是经测试,程序直接抛错!!!不知是没有这个内置对象还是什么原因???
The problematic instruction:
----------
==> ${Parameters["method"]} [on line 134, column 61 in report/cashierSumList.html]
----------
Java backtrace for programmers:
----------
freemarker.core.InvalidReferenceException: Expression Parameters is undefined on line 134, column 63 in report/cashierSumList.html.