摘自:http://www.blogjava.net/ywj-316/articles/300768.html
能够将文本的值解析为宏,类似动态指令用法如下
<#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 >
${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 >
<#list arr as a >
< @selArea selName ="select1" selId ="select1" selvalue =(a?eval) userArea =1010 />
</ #list >