获取参数:param.id
定义变量并赋值:<#assign id=param.id />
避免空值出错:id?default("")
${…}:称为interpolations,FreeMarker会在输出时用实际值进行替代,如${id},${map.ID}
FTL标记(FreeMarker模板语言标记):类似于HTML标记,为了与HTML标记区分,用#开始(有些以@开始,在后面叙述)
注释:包含在<#--和-->(而不是<!--和-->)之间
include:
- <#include?"/copyright_footer.html">??
<#include "/copyright_footer.html">
if/elseif/else:
- <#if?condition><#elseif?condition><#else></#if>??
<#if condition><#elseif condition><#else></#if>
循环:
- <#list?hash_or_seq?as?var> ??
- ????遍历hash表或者collection(freemaker称作sequence)的成员? ??
- ????求序号用info_index ??
- ????求list长度用list?size ??
- </#list>???
<#list hash_or_seq as var> 遍历hash表或者collection(freemaker称作sequence)的成员 求序号用info_index 求list长度用list?size </#list>
- 内建函数 ??
- ????字符串使用的: ??
- ????????html:对字符串进行HTML编码 ??
- ????????cap_first:使字符串第一个字母大写 ??
- ????????lower_case:将字符串转换成小写 ??
- ????????upper_case:将字符串转换成大写 ??
- ????????trim:去掉字符串前后的空白字符 ??
- ????序列使用的: ??
- ????????size:获得序列中元素的数目 ??
- ????数字使用的: ??
- ????????int:取得数字的整数部分(如-1.9?int的结果是-1)??
内建函数 字符串使用的: html:对字符串进行HTML编码 cap_first:使字符串第一个字母大写 lower_case:将字符串转换成小写 upper_case:将字符串转换成大写 trim:去掉字符串前后的空白字符 序列使用的: size:获得序列中元素的数目 数字使用的: int:取得数字的整数部分(如-1.9?int的结果是-1)
- <#macro?name?param1?param2?...?><#nested?param></#macro>?宏,无返回参数 ??
- <#function?name?param1?param2><#return?val></#function>?函数,有返回参数 ??
- ??
- {key:value,?key2:value2?...}?直接定义一个hash表 ??
- [item0,?item1,?item2?...]?直接定义一个序列 ??
- hash0[key0]?存取hash表中key对应的元素 ??
- seq0[5]?存取序列指定下标的元素? ??
- ??
- <@function1?param0?param1?...?/>?调用函数function1 ??
- <@macro0?param0?param1?;?nest_param0?nest_param1?...>?nest_body?<?/@macro>?调用宏,并处理宏的嵌套 ??
- <#assign?var?=?value?>?定义变量并初始化??
<#macro name param1 param2 ... ><#nested param></#macro> 宏,无返回参数 <#function name param1 param2><#return val></#function> 函数,有返回参数 {key:value, key2:value2 ...} 直接定义一个hash表 [item0, item1, item2 ...] 直接定义一个序列 hash0[key0] 存取hash表中key对应的元素 seq0[5] 存取序列指定下标的元素 <@function1 param0 param1 ... /> 调用函数function1 <@macro0 param0 param1 ; nest_param0 nest_param1 ...> nest_body < /@macro> 调用宏,并处理宏的嵌套 <#assign var = value > 定义变量并初始化
----------------------
遇到的麻烦的地方有两个:
一个是空值的处理,很多地方都要多写一个?default("")实在很麻烦,幸亏师兄找到了解决办法,拜一个,见这里:http://huxiao.iteye.com/blog/470927
另一个是不同数据类型不能比较,否则报错,可以用abc?string和abc?int来强转
----------------------
使用起来总之不难,刚看的时候也很迷茫,因为我是新手,学java才几个月,所以理解这些东西比较慢一些,网上很多高手都说几个小时拿下,我大概花了有3-4天的时间吧,1个多星期后才能得心应手的使用,但是到现在为止还有很多不会,只是了解了一些浅层的东西,不过早晚的事情啦,我会努力的。一起加油。
其他部分参见《FreeMarker中文文档》,附件中有。
?
?
?
转自:http://huxiao.iteye.com/blog/470972