首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

(转)freemarker惯用语法指南

2013-11-08 
(转)freemarker常用语法指南$…{seasons?size}$…{seasons[1]?cap_first} #-- left side can by any expres

(转)freemarker常用语法指南

$…{seasons?size}
$…{seasons[1]?cap_first} <#-- left side can by any expression_r_r -->
$…{”horse”?cap_first}
结果:
4
Spring
Horse

方法的调用
$…{repeat(”What”, 3)}
$…{repeat(repeat(”x”, 2), 3) + repeat(”What”, 4)?upper_case}
结果:
WhatWhatWhat
xxxxxxWHATWHATWHATWHAT

操作符优先顺序
后缀 [subvarName] [subStringRange] . (methodParams)
一元 +expr、-expr、!
内建 ?
乘法 *、 / 、%
加法 +、-
关系 <、>、<=、>=(lt、lte、gt、gte)
相等 =、!=
逻辑 &&
逻辑 ||
数字范围 ..

三.) Interpolation:由$…{…}或#…{…}两种类型,输出计算值,可以定义输出的格式
例一:

<#setting number_format="currency"/>
<#assign answer=42/>
$…{answer}
$…{answer?string} <#-- the same as $...{answer} -->
$…{answer?string.number}
$…{answer?string.currency}
$…{answer?string.percent}
结果:
$42.00
$42.00
42
$42.00
4,200%

例二:

$…{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’)'”)}
结果:
2003-04-08 21:24:44 Pacific Daylight Time
Tue, Apr 8, ‘03
Tuesday, April 08, 2003, 09:24:44 PM (PDT)

例三:

<#assign foo=true/>
$…{foo?string(”yes”, “no”)}
结果:
yes

例四:

<#-- x is 2.582 and y is 4 -->
#…{x; M2} <#-- 2.58 -->
#…{y; M2} <#-- 4 -->
#…{x; m1} <#-- 2.6 -->
#…{y; m1} <#-- 4.0 -->
#…{x; m1M2} <#-- 2.58 -->
#…{y; m1M2} <#-- 4.0 -->
说明:mX-小数部分最小X位;MX-小数部分最大X位。

四.) 注释:<#--和-->

下面是一个常用的模板例子:

We have these animals:

NamePrice
<#list animals as being>

?

<#if being.size = "large"></#IF>
$…{being.name}
<#if being.size="large">
</#IF>

?

$…{being.price} Euros
</#LIST>

<#i nclude "/copyright_footer.html">
注意点:
1.) FreeMarker是区分大小写的;
2.) FTL标记不能位于另一个FTL标记内部,例如:<#if <#i nclude 'foo'>=’bar’>…;
3.) $…{…}只能在文本中使用;
4.) 多余的空白字符会在模板输出时去除;
5.) 如果使用的指令不存在,会产生一个错误消息。

<#-- x的值设定为5 -->
$…{x * x – 100}
$…{x / 2}
$…{12 % 10}
结果:
-75
2.5
2

注意: 操作符两边必须是数字;使用”+”时,如果一边是数字,一边是字符串,就会自动将数字转换为字符串。

使用内建的指令int获得整数部分:

$…{(x/2)?int}
$…{1.1?int}
$…{1.999?int}
$…{-1.1?int}
$…{-1.999?int}
结果:
2
1
1
-1
-1

<!-- -->

热点排行