freemarker高级1

摘自:http://www.blogjava.net/ywj-316/articles/300768.html

1, ?interpret 
能够将文本的值解析为宏,类似动态指令用法如下 
<#assign x=["a", "b", "c"]> 
<#assign templateSource = "<#list x as y>${y}</#list>"> 
<#assign inlineTemplate = templateSource?interpret> 
<@inlineTemplate />  

其中"<#list x as y>${y}</#list>"可以是从数据库中读取出来的指令 


2, ?new 
创建一个java对象 
<#assign word_wrapp = "com.acmee.freemarker.WordWrapperDirective"?new()> 
还可以在new的时候加参数,如 
<#assign word_wrapp = "com.acmee.freemarker.WordWrapperDirective"?new(40)> 

3, !!和?? 
两个简写符号,可以让我偷电缆(偷点懒) 
${obj.name!!}  =  ${obj.name?default('')} 
<#if obj?? >   =  <#if obj?exists> 


4, ; in macro 和 nest的参数 
原本以为<#nest/>不能加参数,在构造模板时费了一些劲,原来可以用;在引用macro时给nest传参数 

< @repeat  count =4  ; c, halfc, last >    
  ${c}.${halfc}
< #if  last >  Last! </ #if >    
</ @repeat >    
< @repeat  count =4  ; c, halfc >    
  ${c}.${halfc}   
</ @repeat >    
< @repeat  count =4>   
  
Just repeat it   
</@repeat
>     

5, include里的通配符* 
好像可以应对不固定文件夹层级路径的写法,但具体没用过 
<#include "*/footer.ftl">   
匹配如下 
/foo/bar/footer.ftl 
/foo/footer.ftl 
/footer.ftl 

6    字符串转换为数字
<#assign width="234"/>
<#assign widthNum=width?eval/>

7  split字符串
< #assign  arr  = o[2]?split(',')>
            
<#list arr as a >
            
< @selArea  selName ="select1"  selId ="select1"  selvalue =(a?eval)  userArea =1010  />
            
</ #list >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值