freemarker基础语法

来源:互联网 发布:linux tomcat配置文件 编辑:程序博客网 时间:2024/06/15 03:59

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:\\盘"};

         
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>  

2.switch、case、default、break指令
示例:
<#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')>











 

原创粉丝点击