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?values3.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">
