下面是一些Freemarker常用的指令,方便自己记忆
- 条件:if,else,elseif指令,如
<#if x == 1>
x is 1
<#if y == 1>
and y is 1 too
<#else>
but y is not
</#if>
- 分支:switch,case,default,break指令,如放大法
<#switch value>
<#case refValue1>
...
<#break>
<#case refValue2>
...
<#break>
...
<#case refValueN>
...
<#break>
<#default>
...
</#switch>
- 循环:list、break等
<#list seq as x>
${x}
<#if x = "spring">
<#break>
</#if>
</#list>
- include指令,如
<#include path>
or
<#include path options>
- import指令,如
<#import path as hash>
- assign指令
新建、替换变量,只能是顶级变量,即不能改变如hash_var.sub_var的值
比如:变量test中存储数字:
<#assign test = 3>
<br>结果:${test}<br>
替换改变test的值:
<#assign test = test * 100>
<br>结果:${test}<br>
一个assign处理多个变量:
<#assign v_msg1="消息1" v_msg2="消息2">
- global指令
作用及定义和assign类似,不过创建的变量在所有命名空间都可见。
- local指令
作用及定义它和assign指令类似,但是它创建或替换局部变量。这仅仅在宏和方法的内部定义才会有作用。
- setting指令
设置是影响FreeMarker行为的值,支持的设置有:
locale、number_format、boolean_format、date_format,time_format,datetime_format、time_zone、url_escaping_charset、classic_compatible(这是对专业人员来说的,它的值应该是一个布尔值)
假设原是匈牙利
${1.2}<br>
<#setting locale="en_US">
${1.2}
将会输出(匈牙利以逗号","作为小数的分隔符)
1,2
1.2
- 自定义指令,用<@... />
将调用用户自定义的指令,比如宏。
- ftl指令
- attempt,recover 指令
这些指令在2.3.1版本引入
<#attempt>
attempt block
<#recover>
recover block
</#attempt>
recover只有在前面的模板执行出错(会回滚)才会执行