Freemarker类型:
支持的类型有:
标量:字符串、数字、布尔值、日期
容器:哈希表、序列、集
子程序:方法和函数、用户自定义指令
其他:节点
解释一下 容器 中 集 是一个什么概念:从模板设计者角度来看,集是有限制的序列。不能获取集的大小,也不能通过索引取出集中的子变量,但是它们仍然可以通过list指令来遍历。
方法和函数:个人理解和编程语言差别不大,就方法而言,就是Freemarker代码中可以调用方法,比如说:
这里面有一个计算平均值的方法avg(),我们可以直接调用avg()来计算3和5的平均值
**********************************************************************分隔一下子,清楚一些*******************************************************************************************
用户自定义指令:按照字面意思理解,也就是自定义的Freemarker标签。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&我的天呐我的天呐你肯定猜不到这是一排分割线&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
进行Freemarker编程编写的代码就是模板,也称为FTL,其实大致上包含三个部分:文本、插值、FTL标签
三个部分的知识在freemarker的初步学习中详细介绍了。
FTL编程有以下几点要注意的:
1、FTL编程是区分大小写的
2、插值仅可以在文本中使用
3、FTL标签不可以在FTL标签和插值中使用
4、注释可以放在FTL标签和插值中间
5、指令的嵌套,基本上和HTML,XML语法相似,出了标签以#开头,用户自定义指令以@开头
6、当给插值提供值时,把它放到想输出文本的位置上给值就可以打印了,比如${(5+8)/2}将打印出6.5
7、<#if expression>表达式必须是布尔类型的,凸(艹皿艹 )这不是显而易见的么?
直接写true和false就表征一个布尔值,不需要使用引号
序列:制定一个文字的序列,使用逗号来分隔其中的每个子变量,然后把整个列表放到方括号中:
可以使用start...end定义存储数字范围的序列,如2..5和[2,3,4,5]是相同的,也就是当中有几个......就有几个数字,前面的那种方式内存占用少而且速度快,会更有效率。
在模板中指定一个哈希表,就可以遍历用逗号分隔开的“键/值”对,把列表放到花括号内。键和值成对出现并以冒号分隔。比如:
{"name":"green mouse","price":150}
从哈希表中检索数据的几种方式:
哈希表如下:
要读取title有两种方法:
1、通过book.title
2、通过book["title"]
以下示例是等价的:
book.author.name
book["author"].name
book.author.["name"]
book["author"]["name"]