freemarker笔记
${.....}===>${xxxx},${xxx.xxx.xxx}
if指令===><#ifuser=="bin">html</#if>或<#ifuser="bin">html<#else>html</#if>
<#ifprice==0>html</#if>或<#ifprice==0>html<#else>html</#if>
<#ifanimals.python.price>animals.elephont.price>html</#if>或<#ifanimals.python.price>animals.elephont.price>html<#else>html</#if>
list指令===><#listusersasuser>html</#list>或<#listusersasuser><#ifuser.name="bin">html</#if></#list>
include指令===><#include"xxx/xxx.html">
处理不存在的变量:<h1>Welcome${user!"Anonymous"}!</h1>或<#ifuser??><h1>Welcome${user}!</h1></#if>或<#if(animals.python.price)!0><h1>Welcome${user}!</h1></#if>
标量:字符串,数字,布尔值,日期
容器:哈希表(user.name,user.age),序列(number[1],number[2]),集
字符串操作:str="abcdefg";===>"Hello${user.name}""Hello"+"bin";str[0]等于a
序列操作:users=["bin","job","co","jame"]===>users+["haha"],users[1..3],users[3..]
哈希表操作:user={"age":20,"name":"bin"}===>user+{"addr":"address"}拼接过程中,key一样的覆盖,其它追加;取值法:book.author.name,book["author"].name,book.author.["name"],book["author"]["name"]
处理不存在的值:默认值:name!"unknown"或者(user.name)!"unknown"或者name!或者(user.name)!<#ifmouse??>使用内建函数处理不存在的值:default,exists和if_exists
***注意点:${3*"5"}不执行,${3+"5"}可执行,值为“35”
比较运算:=,!=,<=;逻辑运算:||,&&,!
****注意点:字符串中有特殊的html字符都需要实体引用代替,<代替<
内建函数:cap_first:字符串的第一个字母变为大写形式lower_case:字符串的小写形式upper_case:字符串的大写形式trim:去掉字符串首尾的空格size:序列中元素的个数int:数字的整数部分
函数调用:${test?upper_case?html}test字符串,调用upper_case转成大写字母,之后再调用html将test中属于html的特殊字符转成实体引用
方法的调用:${repeat("What",3)}将“What”字符串拷贝三次
实例:
${mouse!"Nomouse."}===>变量不存在,显示Nomouse
<#assignmouse="Jerry">===>为变量赋值
${mouse!"Nomouse."}===>变量存在,显示变量值Jerry
插值:${x+100}${name}!<#include"xxxx/${url}.html">
日期转成字符串:time_format,date_format和datetime_format
自定义指令:
宏指令定义1:
<#macrogreet>
<fontsize="+2">HelloJoe!</font>
</#macro>
调用:<@greet></@greet>或<@greet/>
定义2:
<#macrogreetpersoncolor...>
<fontsize="+2">HelloJoe!</font>
</#macro>
调用:<@greetperson="Fred"color="black".../>
实例
<#macrorepeatcount>===>定义一个宏
<#list1..countasx>===>遍历一个1..count1到count的序列
<#nestedx,x/2,x==count>===>将x=1,x=2,x=3...依次传到返回值里
</#list>
</#macro>
<@repeatcount=4;c,halfc,last>
${c}.${halfc}<#iflast>Last!</#if>===>输出值
</@repeat>
创建变量:<#assignx=1>;变量范围:内部变量隐藏外部变量,获取全局变量:${.globals.user}
引入外部模板(import指令):<#import"/lib/my_test.ftl"asmy>===>调用:<@my.copyrightdate="1999-2002"/>${my.mail}