关于使用freemarker的一些心得体会

在项目上配置使用freemarker很简单,只需引入一个包即可,也可跟springMVC,struts等框架整合使用,它是一款很好的模板引擎。

常用指令有:

if指令

<#if condition>...<#elseif condition2> ...<#else> ...</#if>
list指令

<#list sequence as item>...<#break>...</#list>其中item_index:当前变量的索引值, item_has_next:是否存在下一个对象
include指令

<#include path> or <#include path options> 其中options:encoding=encoding,parse=parse
macro指令

<#macro name param1 param2 ... paramN></#macro> 引用:<@name  param1>
assign指令

<#assign name = ‘test’ />
switch 指令

<#switch value>      

      <#case refValue>            

      ...             

     <#bread>         

 <#case refValue>         

       ...       

     <#bread>  

 <#default>     

       ...

</#switch>
import指令

<#import   path   as   mapObject>

其中:

path  指定要被导入的模板文件,如"/lib/common.ftl" 
mapObject是一个Map对象名,通过这行代码,将导致path模板中的 所有变量都被放置在mapObject中
noparse指令

 <#noparse>  ${user}</#noparse> 结果输出:${user}

基本操作可参考文章:http://www.blogjava.net/kxbin/articles/366505.html

一些常用技巧:

1、判断某个值是否存在    如: <#if  a??  >或 <#if a?exists>

2、如果元素取不到值就使用默认值   如: ${a!1}或${a?default(1)}

3、使用括号来防止空值异常  如: a、b为空值,${(a+b)!0}或${a!0+b!0}

4、善用集合的内置方法  如:${sequence?first}、 ${sequence?last} ${sequence? reverse} 、${sequence? sort} 、${sequence?sort_by(value) }

5、善用map的内置方法   如:${hash?keys}、${hash?values}

6、自定义布尔值输出   如:${foo?string("是foo","非foo")}

7、WEB开发中获取request、response等值

如:  ${Request ["a"]}   ${RequestParameters["a"]}     ${Session ["a"]}   ${Application ["a"]}   

8、导入第三方标签库

<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] />

9:页面上直接引用类和类的方法

如:引用枚举值<#assign shareTypeArr=stack.findValue("@com.test.lottery.common.ShareType@values()") />
      调用方法<#list shareTypeArr as shareType>${shareType. valueOfOrdinal(0)}</#list>

10:freemarker允许的输出map的key值一般是string类型

如控制器输出的map为{1:"test1", 2:"test2"},页面引用${map[1]}是取不到值的;

如控制器输出的map为{"1":"test1"," 2":"test2"},页面引用${map["1"]}是可取到值。

 

posted @ 2015-04-19 15:43  圣雄1990  阅读(183)  评论(0)    收藏  举报