1.freemarker 数字格式化
freemarker数字格式化可以在两个地方设置,一个是全局的,即在freemarker.properties文件中设置number_format,还有一个是使用string指令来控制数据的输出格式。例如:
${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补齐,否则取实际的整数位
${num?string('###.00')}
等价于
${num?string('#.00')}
输出为:12.70
整数取实际的位数
2.if常用条件判断
a>判断是否存在:
通过exists关键字或者“??”运算符,返回一个布尔值
user.name?exists
user,name??
<#if user.name?exists>
// TO DO
#if>
<#if user.age??>
// TO DO
#if>
b>判断集合不为空:
<#if fields?size ge 0 >
....
#if>
<#if (fields?size>0) >
#if> (必须加括号)
c>判断字符串值是否相等:
<#if str! == "error">
xxx
#if> (!是防止参数为空时报错,要跟!= 区别开)
d>判断集合为空: ${(page.content?size=0)?string("class=\"hide\"","")}
e>三目判断:
${(state! == 'ALL')?string("class=\"stateValue active\"","class=\"stateValue\"")}
${(user.id)! ?has_content?string("readonly=\"readonly\"","")}