Freemarker页面语法 http://jiangsha.iteye.com/blog/372307
freeMarker语法 http://uule.iteye.com/blog/879566
FreeMarker 手册 http://www.kerneler.com/freemarker2.3.23/pgui_quickstart.html
Freemarker 语法简介 https://get233.com/archives/freemarker.html
自己的记录
freemarker中的list http://zhuyuehua.iteye.com/blog/1975251, 如何使用, 如何得到长度,排序等
判断list长度大于0 <#if (domain.inveQuestions?size>0)>
取LIST中第i个元素的值
1 |
${list[i]} |
嵌套时前面要有括号,如下,将字符串变成list,然后取第i个元素的值
1 |
${(str?split(","))[i]} |
三目运算
1 |
${(typeId=10)?string('5','7')} |
FreeMarker 中对空字符串”” 和 null 的判断 http://www.liuqianfei.com/article/87f8317eb7ee4d3f80cd41e64d4e6240
1 |
<#if room.anchorIntroduce?default("")?trim?length gt 0>${room.anchorIntroduce}<#else>没有任何介绍信息</#if> |
freemarker 获取 当前时间
1 |
${.now?string('yyyy-MM')} |
循环数组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<#if (list?size > 0)> <ul class="main-list"> <#list list as item> <li> <a href="${contextPath}/live2/${instanceId}/liveRoom/${item.roomId}.do"> <div class="hui-media-list-img"> <img src="${contextPath}/pages/views/live/images/miaonv.jpg"/> </div> <div class="hui-media-content"> <h1>[直播中]${item.name}</h1> <p>主播:${item.anchorName}</p> <p>开始:${item.startDateTime?string("yyyy-MM-dd HH:mm")}</p> <p>结束:${item.endDateTime?string("yyyy-MM-dd HH:mm")}</p> <p>介绍: ${item.anchorIntroduce}</p> </div> </a> </li> </#list> </ul> <#else> 没有任何正在运行的直播 </#if> |
别人的记录
freemarker使用记录
Freemarker页面语法 http://jiangsha.iteye.com/blog/372307算术运算符
FreeMarker表达式中完全支持算术运算,FreeMarker支持的算术运算符包括:+, – , * , / , % 看如下的代码:
<#assign x=5>
${ x * x – 100 }
${ x /2 }
${ 12 %10 }
输出结果是:
-75 2.5 2
在表达式中使用算术运算符时要注意以下几点:
1,运算符两边的运算数字必须是数字
2,使用+运算符时,如果一边是数字,一边是字符串,就会自动将数字转换为字符串再连接,如:${3 + “5”},结果是:35
使用内建的int函数可对数值取整,如:
<#assign x=5>
${ (x/2)?int }
${ 1.1?int }
${ 1.999?int }
${ -1.1?int }
${ -1.999?int }
结果是:2 1 1 -1 -1比较运算符
表达式中支持的比较运算符有如下几个:
1,=或者==:判断两个值是否相等.
2,!=:判断两个值是否不等.
3,>或者gt:判断左边值是否大于右边值
4,>=或者gte:判断左边值是否大于等于右边值
5,<或者lt:判断左边值是否小于右边值
6,<=或者lte:判断左边值是否小于等于右边值
注意:=和!=可以用于字符串,数值和日期来比较是否相等,但=和!=两边必须是相同类型的值,否则会产生错误,而且FreeMarker是精确比较,”x”,”x “,”X”是不等的.其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替>会有更好的效果,因为FreeMarker会把>解释成FTL标签的结束字符,当然,也可以使用括号来避免这种情况,如:<#if (x>y)>逻辑运算符
逻辑运算符有如下几个:
逻辑与:&&
逻辑或:||
逻辑非:!
逻辑运算符只能作用于布尔值,否则将产生错误内建函数
FreeMarker还提供了一些内建函数来转换输出,可以在任何变量后紧跟?,?后紧跟内建函数,就可以通过内建函数来轮换输出变量.下面是常用的内建的字符串函数:
html:对字符串进行HTML编码
cap_first:使字符串第一个字母大写
lower_case:将字符串转换成小写
upper_case:将字符串转换成大写
trim:去掉字符串前后的空白字符
下面是集合的常用内建函数
size:获取序列中元素的个数
下面是数字值的常用内建函数
int:取得数字的整数部分,结果带符号
例如:
<#assign test=”Tom & Jerry”>
${test?html}
${test?upper_case?html}
结果是:Tom & Jerry TOM & JERRY空值处理运算符
FreeMarker对空值的处理非常严格,FreeMarker的变量必须有值,没有被赋值的变量就会抛出异常,因为FreeMarker未赋值的变量强制出错可以杜绝很多潜在的错误,如缺失潜在的变量命名,或者其他变量错误.这里所说的空值,实际上也包括那些并不存在的变量,对于一个Java的null值而言,我们认为这个变量是存在的,只是它的值为null,但对于FreeMarker模板而言,它无法理解null值,null值和不存在的变量完全相同.
为了处理缺失变量,FreeMarker提供了两个运算符:
!:指定缺失变量的默认值
??:判断某个变量是否存在
其中,!运算符的用法有如下两种:
variable!或variable!defaultValue,第一种用法不给缺失的变量指定默认值,表明默认值是空字符串,长度为0的集合,或者长度为0的Map对象.
使用!指定默认值时,并不要求默认值的类型和变量类型相同.使用??运算符非常简单,它总是返回一个布尔值,用法为:variable??,如果该变量存在,返回true,否则返回false比较大小和逻辑运算
<#assign x = 4>
<#if (x>5)>
x >5
</#if>
<#if gridParam.dataRows?? && (gridParam.dataRows?size>0)>
表格记录数大于0
</#if>以index为循环
<#list 1..gridParam.rows as idx>
${idx}
</#list>定义变量和计算
<#assign allTotal=0>
<#assign allTotal=allTotal+detail.realSum>获得list的长度
myList?size货币,百分比格式化
三种数字格式: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%数字格式化, 详细看原文
http://www.netingcn.com/freemarker-number-format.html
${num?string(‘0.00’)}
如果小数点后不足两位,用 0 代替
${num?string(‘#.##’)}
如果小数点后多余两位,就只保留两位,否则输出实际值
输出为:1239765.46
freemarker格式化日期 http://ljhzzyx.blog.163.com/blog/static/383803122013214102540434/
${dateVar?string(“yyyy-MM-dd HH:mm:ss zzzz”)}
循环读取
<#list sequence as item>
…
</#list>
空值判断<#if bookList?size = 0></#list>
freemarker判断是否为空
http://www.oschina.net/code/snippet_54124_15295
<#if s?exists> exists用在逻辑判断
${s?if_exists} 用来打印东西时用到,如果存在打印,不存在打印空字符串.
exp1?exists将会被exp1??代替
exp1?if_exists将会被exp1!代替
exp1?default(exp2)将会被exp1!exp2.