您的位置:首页 > 其它

freemarker

2016-01-23 16:43 183 查看
第一章:基本

一、if指令
<# if condition>
<#else>
</#if>

二、list指令
<#list sequence as loopVariable>repeatThis</#list>
repeatThis 部分将会在给定的 sequence 遍历时在每项中重复,从第一项开始,
一个接着一个。 在所有的重复中, loopVariable 将持有当前项的值。 这个循环变量仅
存在于<#list …>和</#list>标签之间。

三、include指令
<#include "/copyright_footer.html">

四、联合使用指令
<#list animals as begin>
<tr>
<td>
<#if begin.size == "large"><font size="+1"></#if>
${being.name}
<#if begin.size == "large"></font></#if>
</td>${begin.price} Euros
</tr>
</#list>
五、不存在的变量: 不允许,但是定义了处理规则之后是可以的。
方式一:指定默认值: ${变量名!默认值}
<h1>Welcome ${user!"DefaultValue"}</h1>
方式二:结合if指令使用:
<#if user??><h1>Welcome ${user}</h1></#if>

变量名??  :如果存在返回true,否则返回flase。

补充:
关 于 多 级 访 问 的 变 量 , 比 如 animals.python.price , 书 写 代 码 :
animals.python.price!0 ,仅当 animals.python 存在而仅仅最后一个子变
量 price 可能不存在(这种情况下我们假设价格是 0)。 如果 animals 或者 python
不存在,那么模板处理过程将会以“未定义的变量”错误而停止。 为了防止这种情况的发生,
可以这样来书写代码(animals.python.price) !0。这种情况下当 animals 或
python 不存在时表达式的结果仍然是 0。 对于 ??也是同样用来的处理这种逻辑的:
animals.python.price?? 对比(animals.python.price)?? 来看。

第二章: 数值和类型
一、数值
二、类型
一】标量
1)字符串:简单文本
2)数字:整数和非整数是不区分的,只有单一的数字类型。 3/2=1.5
3)布尔值:代表了逻辑上的对与错。(模版中可以使用true和false)
4)日期:日期变量可以存储和日期/时间相关的数据。
二】容器
1)哈希表:每个子变量都可以通过一个唯一的名称来查找,这个名称是不受限制的字
符串。 哈希表并不确定其中子变量的顺序,也就是说没有第一个变量,第二个变量
这样的说法,变量仅仅是通过名称来访问的。
2)序列:每个子变量通过一个整数来标识,
子变量是有序的,整数通常被称为子变量的索引
子变量的数值类型不需要完全一致。
3)从模板设计者角度来看,集是有限制的序列。不能获取集的大小,也不能通过
索引取出集中的子变量,但是它们仍然可以通过 list 指令来遍历。
三】子程序:
1)方法和函数:
函数/方法也可以是其他函数或方法的参数或者返回值,并可以把它们定义成变量。
区别:
方法:来自于数据模型,反射了java对象的方法
函数:定义于模版内。
可以用同一种方式来使用。

第三章 模版
一、总体结构
Text文本:照原样输出
interpolation 插值:${变量名}
FTL tags 标签: FTL标签和HTML标签很相似,给FreeMarker指示
comments 注释:<#--注释的内容-->  会被FreeMarker忽略掉,更不会在输出内容中显示。

注意:
1)FTL标签不可以在其他FTL标签和插值中使用:<#if <#include 'foo'>='bar'>>...</if>
2)注释相反可以放在FTL标签和插值中间使用
eg:
${user <#--The name of user-->}      <#List <#-- some comment --> animals as <#--again-->></#list>
二、指令
预定义指令:<#directivename parametes>...</#directivename>
自定义指令:<@mydirective parameters>...</@mydirective>
三、表达式
插值:       ${(5+8)/2}   打印6.5
指令参数   <#if 2 < 3 >   成立(2<3为rue)
一】字符串
1)"some text" 和 'some text' 形式相等。
2)\为转移字符  eg: \\ \" \'
3)表明字符串为原生字符串,加r  ${r"${foo}"}  ${r"c:\foo\bar"}

二】序列
使用逗号来分隔其中的每个子变量,然后把整个列表放到方括号中
列举:<#list ["winter", "spring", "summer", "autumn" as x]>${x}</#list>
范围: 2..5 等价于[2, 3, 4, 5] 但是使用前者(没有[]符号)会更有效率(内存占用少而且速度快)。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: