FreeMarker笔记
开发常用标签:
- ${…}:为取值
- <#…>:FTL标签
- <@>:自定义宏
- <#– Comments 注释–>
if指令
<#if user == "bluetom">...</#if>
<#if user[0].age<user[1].age>
hello,world
<#else>
</#if>
`</pre>
##### list指令
<pre>`<#list userlist as item>
...
</#list>
`</pre>
两个特殊的循环变量:
item_index: 当前变量的索引值。
item_has_next: 是否存在下一个对象。
<#break/>指令离开loop循环
##### switch
<pre>`<#switch value>
<#case refValue1>
...
<#break>
<#case refValue2>
...
<#break>
...
<#case refValueN>
...
<#break>
<#default>
...
</#switch>
`</pre>
#### include指令
<pre>`<#include "*/commons/footer.ftl">
`</pre>
#### escape指令
<pre>`//解析模板用
<#escape x as x?html>
Customer Name:${customerName}
Items to ship;
<#escape x as itemCodeToNameMap[x]>
${itemCode1}
${itemCode2}
${itemCode3}
${itemCode4}
</#escape>
</#escape>
`</pre>
#### assign指令
为模板页面创建、替换一个顶层变量
<pre>`<#assign x>
<#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六"] as n>
${n}
</#list>
</#assign>
`</pre>
#### macro , nested , return指令
macro可以用于实现自定义指令,通过使用自定义指令,可以将一段模板片段定义成一个用户指令,使用macro指令的语法格式如下:
<pre>`<#macro name param1 param2 ... paramN>
...
<#nested loopvar1, loopvar2, ..., loopvarN>
...
<#return>
...
</#macro>
在上面的格式片段中,包含了如下几个部分:
name:name属性指定的是该自定义指令的名字,使用自定义指令时可以传入多个参数
paramX:该属性就是指定使用自定义指令时报参数,使用该自定义指令时,必须为这些参数传入值
nested指令:nested标签输出使用自定义指令时的中间部分
nested指令中的循环变量:这此循环变量将由macro定义部分指定,传给使用标签的模板
return指令:该指令可用于随时结束该自定义指令