5.变量的声明
-
plain变量:可以在模板的任何地方访问,包括使用include指令插入的模板,使用assign指令创建和替换
<#assign num=0/>
<#assign x="Hello ${user}!"/> 局部变量:在宏定义体中有效,使用local指令创建和替换
循环变量:只能存在于指令的嵌套内容,由指令(如list)自动创建;宏的参数是局部变量,而不是循环变量
6.运算符的优先级
FreeMarker中的运算符优先级如下(由高到低排列):
- 1,一元运算符:!
- 2,内建函数:?
- 3,乘除法: *, / , %
- 4,加减法:- , +
- 5,比较: > , < , >= , <= (lt , lte , gt , gte)
- 6,相等: == , = , !=
- 7,逻辑与:&&
- 8,逻辑或: ||
- 9,数字范围:..
7.其他指令
7.1 include指令
include指令的作用类似于JSP的包含指令,用于包含指定页.include指令的语法格式如下:
<#include filename [options]>
在上面的语法格式中,两个参数的解释如下:
filename:该参数指定被包含的模板文件
options:该参数可以省略,指定包含时的选项,包含encoding和parse两个选项,其中encoding指定包含页面时所用的解码集,而parse指定被包含文件是否作为FTL文件来解析,如果省略了parse选项值,则该选项默认是true.
7.2 import指令
该指令用于导入FreeMarker模板中的所有变量,并将该变量放置在指定的Map对象中,import指令的语法格式如下:
<#import "/lib/common.ftl" as com>
上面的代码将导入/lib/common.ftl模板文件中的所有变量,交将这些变量放置在一个名为com的Map对象中.
7.3 setting指令
该指令用于设置FreeMarker的运行环境,该指令的语法格式如下:<#setting name=value>,在这个格式中,name的取值范围包含如下几个:
- locale:该选项指定该模板所用的国家/语言选项
- number_format:指定格式化输出数字的格式
- boolean_format:指定两个布尔值的语法格式,默认值是true,false
- date_format,time_format,datetime_format:指定格式化输出日期的格式
- time_zone:设置格式化输出日期时所使用的时区
7.4 macro ,nested,return 指令
macro可以用于实现自定义指令,通过使用自定义指令,可以将一段模板片段定义成一个用户指令,使用macro指令的语法格式如下:
<#macro name param1 param2 ... paramN>
...
<#nested loopvar1, loopvar2, ..., loopvarN>
...
<#return>
...
</#macro>
在上面的格式片段中,包含了如下几个部分:
- name:name属性指定的是该自定义指令的名字,使用自定义指令时可以传入多个参数
- paramX:该属性就是指定使用自定义指令时报参数,使用该自定义指令时,必须为这些参数传入值
- nested指令:nested标签输出使用自定义指令时的中间部分
- nested指令中的循环变量:这此循环变量将由macro定义部分指定,传给使用标签的模板
- return指令:该指令可用于随时结束该自定义指令.