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.