FTL指令规则
在FreeMarker中,使用FTL标签来使用指令,FreeMarker有3种FTL标签,这和HTML标签是完全类似的.
1.开始标签:<#指令名 参数> 如<#list users as user>
2.结束标签:#指令名> 如#list>
3.单标签:<#指令名 参数/>
实际上,使用标签时前面的符号#也可能变成@,如果该指令是一个用户指令而不是系统内建指令时,应将#符号改成@符号.
使用FTL标签时,应该有正确的嵌套,而不是交叉使用,这和XML标签的用法完全一样.如果全用不存在的指令,FreeMarker不会使用模板输出,而是产生一个错误消息.FreeMarker会忽略FTL标签中的空白字符.值得注意的是< , /> 和指令之间不允许有空白字符.
插值规则
FreeMarker的插值有如下两种类型:
1、通用插值${expr};
2、数字格式化插值:#{expr}或#{expr;format}
可以简单理解为输出表达式
通用插值
对于通用插值,又可以分为以下4种情况:
1、插值结果为字符串值:直接输出表达式结果
2、插值结果为数字值:根据默认格式(由#setting指令设置)将表达式结果转换成文本输出.可以使用内建的字符串函数格式化单个插值,如下面的例子:
<#setting number_format="currency"/> <#-- 设置数字格式为货币 -->
<#assign answer=42/> <#-- 赋值 -->
${answer} <#-- 输出 -->
${answer?string} <#-- 输出格式为字符类型,与上面相同-->
${answer?string.number} <#-- 输出格式为数字类型-->
${answer?string.currency} <#-- 输出格式为货币类型-->
${answer?string.percent} <#-- 输出格式为百分比类型-->
输出结果是:
$42.00
$42.00
42
$42.00
4,200%
插值结果为日期值:
根据默认格式(由#setting指令设置)将表达式结果转换成文本输出.可以使用内建的字符串函数格式化单个插值,如下面的例子:
${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')'")}
输出结果是:
2008-04-08 08:08:08 Pacific Daylight Time
Tue, Apr 8, '03
Tuesday, April 08, 2003, 08:08:08 PM (PDT)
插值结果为布尔值:
根据默认格式(由#setting指令设置)将表达式结果转换成文本输出.可以使用内建的字符串函数格式化单个插值,如下面的例子:
<#assign foo=true/>
${foo?string("yes", "no")}
输出结果是:
yes
值为Null
${(itemOrdersModel.sellUserNameNi)!""}
参照:
https://www.cnblogs.com/best/archive/2016/08/01/5681511.html