freemarker内建函数

本文介绍了Freemarker的内建函数,包括List函数如list?first、list?sort_by,Hash函数如hash?keys,字符串操作函数如substring,数字操作函数如round,以及布尔值和类型判断函数等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

freemarker内建函数

  1. 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> 
  1. Hash 的内置函数
    • hash?keys 返回hash 里的所有key, 返回结果为list
    • hash?values 返回hash 里的所有value, 返回结果为list
<#list hash?keys as key>
输出key:${key}<br>
输出value:${hash[key]}
</#list> 
  1. 操作字符串函数
    • 字符串连接 +
<#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

注意:如果指定的字符串格式不正确将引发错误。

  1. 操作数字
    • 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}
  1. 操作布尔值

    • 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值