assign 自定义变量指令
使用 assign 指令可以创建一个新的变量或者替换一个已经存在的变量
<#-- assign自定义变量
语法:
<#assign 变量名=值 >
<#assign 变量名=值 变量名=值 ...> (定义多个变量)
-->
<#-- 定义字符串变量 -->
<#assign str="Hello">
${str}
<#-- 定义集合变量 -->
<#assign num=1 names=["李四","王五"] >
${num} -- ${names?join(",")}
if elseif else 逻辑判断指令
可以使用 if、elseif 和 else 指令来判断条件是否满足某些条件
<#--
if,else,elseif 逻辑判断指令
语法格式:
<#if condition>
...
<elseif condition>
...
<elseif condition>
...
<else>
...
</#if>
注:
1.condition:指能被计算成布尔值的表达式或布尔值
2.elseif和else指令为可选,非必需
3.比较运算符的其他写法
lt 小于
gt 大于
lte 小于等于
gte 大于等于
-->
<#assign score=60 >
<#if score lt 60>
不及格!
<#elseif score lt 80 >
及格
<#elseif score lt 100 >
优秀
<#else>
完美
</#if>
list 遍历指令
使用 list 指令来对序列进行遍历
<#-- list指令
格式1:
<#list sequence as item>
</#list>
格式2:
<#list sequence as item>
<#else>
当没有选项时,才会执行else语句
</#list>
注:
1.else部分可选,当没有迭代项时执行
2.sequence:可迭代的序列,数组、List、Set、Map?keys、Map?values
3.item:迭代变量
-->
<#-- 可迭代序列为空时直接遍历会抛出异常,可以作如下两种处理 -->
<#-- 先判空,再遍历 -->
<#assign names=["世界","美好"] >
<#if names?? >
<#list names as name>
${name}
</#list>
</#if>
<#-- 对空集合作else处理 -->
<#assign names=[] >
<#list names as name>
${name}
<#else>
集合为空
</#list>
macro 自定义指令
可以使用 macro 指令来自定义执行一些自定义指令
<#-- macro 自定义指令(宏)
1.基本使用
格式:
<#macro 指令名>
指令内容
</#macro>
使用:
<@指令名></@指令名>
2.有参数的自定义指令
格式:
<#macro 指令名 参数名1 参数名2 ...>
指令内容
</#macro>
使用:
<@指令名 参数名1=参数值1 参数名2=参数值2 ...></@指令名>
注:
1.指令支持多次使用
2.自定义指令中可以包含字符串,也可包含内置指令
-->
<#-- 自定义指令示例 -->
<#macro address>
© 1999-2015 The FreeMarker Project.All Right reserved.
</#macro>
<@address></@address>
<#-- 打印9*9乘法表 -->
<#macro cfb>
<#list 1..9 as i>
<#list 1..i as j>
${j} * ${i} = ${j*i}
</#list>
<br/>
</#list>
</#macro>
<@cfb></@cfb>
nested 占位指令
nested 指令执行自定义指令开始和结束标签中间的模板片段,嵌套的片段可以包含模板中任意合法的内容
<#-- nested 占位指令:
nested 相当于占位符,一般结合macro指令一起使用
可以将自定义指令中的内容通过nested指令占位,当使用自定义指令时,会将占位内容显示
-->
<#macro test>
这是一段文本!
<#nested>
<#nested>
</#macro>
<@test><h4> 这是文本后面的内容!</h4></@test>
输出结果:
import 导入指令
import 指令用于引入一个库,即创建一个新的命名空间,然后在那个命名空间中执行给定路径的模板,可以使用引入的空间中的指令
如 commons.ftl
<#macro cfb num>
<#list 1..num as i>
<#list 1..i as j>
${j} * ${i} = ${j*i}
</#list>
<br/>
</#list>
</#macro>
在其他的 ftl 页面中通过 import 导入 commons.ftl 的命名空间,使用该命名空间中的指令:
<#-- 导入命名空间 -->
<#import "commons.ftl" as common>
<#-- 使用命名空间中的指令 -->
<@common.cfb 10></@common.cfb>
include 包含指令
include 指令用于在模板中插入另外一个 FreeMarker 模板文件,被包含模板的输出格式是在 include 标签出现的位置引入的。被包含的文件和包含它的模板共享变量,就像被复制粘贴进去的一样
<#-- 包含指令(引入其他页面文件)include -->
<#-- html文件 -->
<#include "test.html">
<#-- freemarker文件 -->
<#include "test.ftl">
<#-- text文件 -->
<#include "test.txt">