freemarker常见语法大全
一、FreeMarker模板文件主要有4个部分组成
1、文本:直接输出的部分
2、注释:即<#--...-->格式不会输出
3、插值(Interpolation):即${..}或者#{..}格式的部分,将使用数据模型中的部分替代输出
4、FTL指令:FreeMarker指令,和HTML标记类似,名字前加#予以区分,不会输出。
插值规则:
1、通用插值:${expr}
2、数字格式化插值:#{expr}或者#{expr;format}
通用插值:
1.插值结果为字符串值:直接输出表达式结果
2.插值结果为数字值:根据默认格式(#setting 指令设置)将表达式结果转换成文本输出。可以使用内建的字符串函数格式
示例:
<#setting number_format = "currency" />
<#assign price = 42 />
${price}
${price?string}
${price?string.number}
${price?string.currency}
${price?string.percent}
3. 输出值为日期值:根据默认格式(由 #setting 指令设置)将表达式结果转换成文本输出,可以使用内建的字符串函数格式化单个插值
示例:
<#assign lastUpdated = "2009-01-07 15:05"?datetime("yyyy-MM-dd HH:mm") />
${lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")};
${lastUpdated?string("EEE,MMM d,yy")};
${lastUpdated?string("EEEE,MMMM dd,yyyy,hh:mm:ss a '('zzz')'")};
${lastUpdated?string.short};
${lastUpdated?string.long};
${lastUpdated?String.full};
4.插值结果为布尔值
示例:
<#assign foo=true />
${foo?string("是foo","非foo")}
5.
数字格式化插值:数字格式化插值可采用#{expr;format}的形式来格式化数字,format可以是
mX:小数部分最小X位
MX:小数部分最大X位
示例:
<#assign x = 2.582 />
<#assign y =4 />
#{x;M2};
#{y;M2};
#{x;m1};
#{y;m1};
#{x;m1M2};
#{y:m1M2};
1、直接指定值
示例:
${'我的名字是\"yeek\"'};
${"我的文件保存在d:\\盘"};
${"我的文件保存在d:\\盘"};
2.日期型
FreeMarker支持date、time、datetime三种类型,这三种类型的值无法直接指定,通常需要借助字符串的date、time、datetime三个内建函数进行转换
示例:
<#assign test1 = "2009-01-22"?date("yyyy-MM-dd") />;
<#assign test2 ="16:34:43"?time("HH:mm:ss") />
<#assign test2 = "2009-01-22 17:23:45"?datetime("yyyy-MM-dd HH:mm:ss") />
${test1?string.full}
三、FreeMarker 的常用指令
1、if指令
示例:
<#if condition>
....
<#elseif condition2>
...
<#elseif condition3>
...
<#else>
...
</#if>
示例:
<#switch value>
<#case refValue>
...
<#bread>
<#case refValue>
...
<#bread>
<#default>
...
</#switch>
3.
list、break指令
示例:
<#list sequence as item>
...
</#list>
4.assign指令
它用于为该模板页面创建一个变量相当于java中声明一个变量
示例:
<#assign readonly =(HISTORY=="0") && (ACTIVITY=='start' || ACTIVITY == 'usertask1')>