简介
本文介绍FreeMarker如何对空值、长度、字符串的判断。
判断对象是否存在(null)
经常会用到,如果对象 != null 则xxxx,在freemarker中表达比较奇怪,例如判断 target 是否为null,如果不为 nll 则做xxx动作
<#if target??> xxxx </#if>
(目标变量后面连续两个??)
字符串或数字比较
java里标准字符串比较需要 .equals() 方法,在freemarkder中进行了简化,字符串的比较方法和数字完全一样。
<#if str == "success"> xxx </#if> <#if str !== "error"> xxx </#if>
判断list长度是否大于0
<#if (fields?size>0) > </#if>
截取字符串长度
<#if infos.name?length lt 7 > ${infos.name} <#else> ${infos.name[0..6]}... </#if>
时间格式化
时间戳转日期
${time?number_to_datetime} ${time?number*1000} 时间戳乘1000
日期格式化
${dateTime?string('yyyy-MM-dd hh:mm:ss')} 格式化为 2020-11-12 15:05:29 ${dateTime?string('yyyy-MM-dd ')} 格式化为 2020-11-12
数值格式化
需注意:Freemarker中对于数值只有三种类型,
- 货币(currency类型)::${0.3?string.currency}
- 百分比(percent类型):${0.3?string.percent}
- 数字(number类型)(默认):${0.3?string.number}—默认会有千分位显示,(例如5000则显示为5,000)number
如若不需要这种显示则可以(前提传入的数据是number类型)${number?string}。反之如果需要(前提是传入的是String类型)${string?number}
- ${num?string(‘0.00’)}
- 如果小数点后不足两位,用 0 代替
- ${num?string(‘#.##’)}
- 如果小数点后多余两位,就只保留两位,否则输出实际值
- 输出为:1239765.46
- ${num?string(‘,###.00’)}
- 输出为:1,239,765.46
- 整数部分每三位用 , 分割,并且保证小数点后保留两位,不足用 0 代替
- ${num?string(‘,###.##’)}
- 输出为:1,239,765.46
- 整数部分每三位用 , 分割,并且小数点后多余两位就只保留两位,不足两位就取实际位数,可以不不包含小数点
- ${num?string(‘000.00’)}
- 输出为:012.70
- 整数部分如果不足三位(000),前面用0补齐,否则取实际的整数位
- 输出为:012.70
- ${num?string(‘###.00’)}
- 等价于:${num?string(‘#.00’)}
- 输出为:12.70
请先
!