FreeMarker的插值有如下两种类型:
1,通用插值${expr};
2,数字格式化插值:#{expr}或#{expr;format}
通用插值:
${book.name?if_exists } //用于判断如果存在,就输出这个值
${book.name?default(‘xxx’)} //默认值xxx
${book.name!”xxx”} //默认值xxx
${book.date?string(‘yyyy-MM-dd’)} //日期格式
${book?string.number} 20 //三种不同的数字格式
{book?string.currency}-- <#--20.00 –>
${book?string.percent}— <#– 20% –>
<#assign foo=ture /> //声明变量,插入布尔值进行显示
${foo?string(“yes”,”no”)} <#– yes –>
大小比较符号使用需要注意:
(xml的原因),可以用于比较数字和日期
使用lt、lte、gt和gte来替代<、<=、>和>= 也可以使用括号<#if (x>y)>
内置函数: 调用区别于属性的访问,使用?代替.
常见的一些内置函数
对于字符串
html-对字符串进行HTML编码
cap_first-使字符串第一个字母大写
lower_case-将字符串转换成小写
trim-去掉字符串前后的空白字符
对于Sequences(序列)
size-获得序列中元素的数目
对于数字
int-取得数字的整数部分(如-1.9?int的结果是-1)
对于集合
可以使用数组的方式,使用下标索引进行访问
逻辑判断:
if:
<#if condition>…
<#elseif condition2>…
<#elseif condition3>……
<#else>…
Boolean类型的空值判断:
空值判断可以写成<#if book.name?? > //注意${}为变量的渲染显示,而<>为定义等操作符的定义
switch:
<#switch value>
<#case refValue1>
…
<#break>
<#case refValue2>
…
<#break>
…
<#case refValueN>
…
<#break>
<#default>
…
这个例子是用于输出数字的格式化,保留小数的位数,详细如下
数字格式化插值可采用#{expr;format}形式来格式化数字,其中format可以是:
mX:小数部分最小X位
MX:小数部分最大X位
在定义字符串的时候,可以使用”或者”“,对特殊字符,需要使用\进行转义
如果存在大量特殊字符,可以使用${r”…”}进行过滤
{r"{foo}”}
${r”C:\foo\bar”}
Map对象的key和value都是表达式,但是key必须是字符串,可以混合使用.和[“”]访问
book.author[“name”] //混合使用点语法和方括号语法
为了处理缺失变量,FreeMarker提供了两个运算符: 用于防止对象不存在而导致的异常
!:指定缺失变量的默认值
??:判断某个变量是否存在,返回boolean值
noparse指令指定FreeMarker不处理该指定里包含的内容,该指令的语法格式如下:
<#noparse>…