-
FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成:
文本:直接输出的部分
注释:<#-- ... -->格式部分,不会输出
插值:即${...}或#{...}格式的部分,将使用数据模型中的部分替代输出
FTL指令:FreeMarker指定,和HTML标记类似,名字前加#予以区分,不会输出
下面是一个FreeMarker模板的例子,包含了以上所说的4个部分:
<html>
<head>
<title>Welcome!</title>
</head>
<body>
<#-- 注释部分 -->
<#-- 下面使用插值 -->
<h1>Welcome ${user} !</h1>
<p>We have these animals:</p>
<u1>
<#-- 使用FTL指令 -->
<#list animals as being>
<li>${being.name} for ${being.price} Euros</li>
<#list>
<u1>
</body>
</html>
- c函数是将数字转换成字符串
${limit?c}
freemarker中的c函数是将数字转换成字符串,当你在页面中要显示带小数的数字时,一定要写成${x?c}而不能写成${x?default('')},否则显示出的数字都变成了整数,小数位都被自动截掉了。切记!!
- 日期格式
${lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")}
- 插值结果为布尔值:根据默认格式(由#setting指令设置)将表达式结果转换成文本输出.
<#assign foo=true/>
${foo?string("yes", "no")}
- if操作
<#if (version.type==1)>正式
<#else>debug
</#if>
- switch , case , default , break指令
<#switch value>
<#case refValue>...<#break>
<#case refValue>...<#break>
<#default>...
</#switch>
- list指令
<#list sequence as item>
...
</#list>
- 运算符的优先级
FreeMarker中的运算符优先级如下(由高到低排列):
一元运算符: !
内建函数: ?
乘除法: *, / , %
加减法: - , +
逻辑与: &&
逻辑或: ||
数字范围: ..
- 比较运算符
=或者==:判断两个值是否相等.
!=:判断两个值是否不等.
>或者gt:判断左边值是否大于右边值
>=或者gte:判断左边值是否大于等于右边值
\<或者lt:判断左边值是否小于右边值
\<=或者lte:判断左边值是否小于等于右边值