freemarker内建函数
- List 的内置函数
- list?first 返回list 的第一个值。
- list?last 返回list 的最后一个值。
- list?reverse 将list 的现有顺序反转,即倒序排序
- list?size 返回list 的大小
- list?sort 将list 中的对象转化为字符串后顺序排序
- list?sort_by(value) 按list 中对象的属性value 进行排序
- list?chunk(4) 把一个list按每4个分成1组
- list?seq_contains 判断一个list是否是这个list的一部分
- list?seq_index_of 返回匹配的list的位置
- 取list的item的下标,见代码
注意:list 不能为null 。如果可能为null,则这样写list!?first
注意:可以组合使用,如list?sort?reverse
<#list userList as item>
${item_index}:${item.name}
</#list>
- Hash 的内置函数
- hash?keys 返回hash 里的所有key, 返回结果为list
- hash?values 返回hash 里的所有value, 返回结果为list
<#list hash?keys as key>
输出key:${key}<br>
输出value:${hash[key]}
</#list>
- 操作字符串函数
- 字符串连接 +
<#assign a = 'str'/>
<#assign b = 'ing'/>
${a+b}
- substring(start,end)从一个字符串中截取子串
- start: 截取子串开始的索引,start 必须大于等于0 ,小于等于end
- end: 截取子串的长度,end必须大于等于0,小于等于字符串长度,如果省略该参数,默认为字符串长度。
${'str'?substring(0)} 结果为str
${'str'?substring(1)} 结果为tr
${'str'?substring(2)} 结果为r
${'str'?substring(3)} 结果为
${'str'?substring(0,0)} 结果为
${'str'?substring(0,1)} 结果为s
${'str'?substring(0,2)} 结果为st
${'str'?substring(0,3)} 结果为str
- upper_case 大写
${'str'?upper_case} 结果为STR
- lower_case 小写
${'STR'?lower_case} 结果为str
- cap_first 将字符串中的第一个单词的首字母变为大写。
${'str'?cap_first} 结果为Str
- uncap_first 将字符串中的第一个单词的首字母变为小写。
${'Str'?uncap_first} 结果为str
- capitalize 将字符串中的所有单词的首字母变为大写
${'str'? capitalize} 结果为STR
- ends_with 判断某个字符串是否由某个子串结尾,返回布尔值。
${ 'string'?ends_with('ing')?string} 返回结果为true
注意:布尔值必须转换为字符串才能输出
- html 用于将字符串中的< 、> 、& 和’替换为对应得<>’:&
- index_of (substring,start)在字符串中查找某个子串,返回找到子串的第一个字符的索引,如果没有找到子串,则返回-1 。
- Start 参数用于指定从字符串的那个索引处开始搜索,start 为数字值。如果start 大于字符串长度,则start 取值等于字符串长度,如果start 小于0 , 则start 取值为0 。
${'string'?index_of('in') 结果为3
${'string'?index_of('ab') 结果为-1
- last_index_of 最后的索引所在位置
${'stiring'?last_index_of("i") 结果为4
- length 返回字符串的长度
${'string'?length} 结果为6
- lower_case 将字符串转为小写
${'STRING'?lower_case} 结果为string
- upper_case 将字符串转为大写
${'string'?upper_case} 结果为STRING
- contains 判断字符中是否包含某个子串。返回布尔值
${'string'?contains('ing')?string} 结果为true
注意:布尔值必须转换为字符串才能输出
- number 将字符串转换为数字
${'111.11'?number} 结果为111.11
- replace 用于将字符串中的一部分从左到右替换为另外的字符串。
${'strabg'?replace('ab','in')} 结果为string
- split 使用指定的分隔符将一个字符串拆分为一组字符串
<#list 'This|is|split'?split('|') as s>
${s}
</#list>
结果为:
This
is
split
- trim 删除字符串首尾空格
${' String '?trim} 结果为String
- date,time ,datetime 将字符串转换为日期
<#assign date1='2009-10-12'?date('yyyy-MM-dd')>
<#assign date2='9:28:20'?time('HH:mm:ss')>
<#assign date3=' 2009-10-12 9:28:20'?time('HH:mm:ss')>
${date1} 结果为2009-10-12
${date2} 结果为9:28:20
${date3} 结果为2009-10-12 9:28:20
注意:如果指定的字符串格式不正确将引发错误。
- 操作数字
- c 用于将数字转换为字符串
${123?c} 结果为123
- string 用于将数字转换为字符串,Freemarker中预订义了三种数字格式:number,currency (货币)和percent( 百分比) 其中number 为默认的数字格式转换
例如:
<#assign tempNum=20>
${tempNum}
${tempNum?string.number} 或${tempNum?string('number')} 结果为20
${tempNum?string.currency} 或${tempNum?string('currency')} 结果为¥20.00
${tempNum?string. percent} 或${tempNum?string('percent')} 结果为2,000%
- 限制小数点后几位
<#assign num = 3.1415926 />
${num?string("0.##")} 默认为四舍五入
- 四舍五入round、比该数小的整数floor、比该数大的整数ceiling
<#assign num = 3.1415926 />
${num?round}
${num?floor}
${num?ceiling}
操作布尔值
- string 用于将布尔值转换为字符串输出,true 转为’true’ ,false 转换为’false’.
foo?string('yes','no') 如果布尔值是true, 那么返回'yes', 否则返回no
6.其他内建函数
- is_number判断是否为数字,是返回true,否则返回false,因为这里的freemarker默认不能显示true和false,所以使用string(‘yes’,’no’)转化成yes和no
${var?is_number?string('yes','no')}
- is_string判断是否为字符串,是返回true,否则返回false,因为这里的freemarker默认不能显示true和false,所以使用string(‘yes’,’no’)转化成yes和no
${var?is_string?string('yes','no')}
- has_content 判断var是否存在或为null,如果有值的话返回true,否则返回false
${var?has_content?string('yes','no')}
- eval 执行代码
${("1"+"2")?is_string?string('yes','no')} 输出yes
${"1"+"2"} 输出12
${("1"+"2")?eval?is_string?string('yes','no')} 输出no
${("1"+"2")?eval} 输出3