FreeMarker指令标签

使用 FTL 标签来调用 directives 指令,比如调用 list 指令。在语法上我们使用了两个标

签:<#list animals as being>和</#list>。

标签分为两种:

开始标签:<#directivename parametes >

结束标签:</#directivename>

除了标签以#开头外,其他都和 HTML, XML 的语法很相似。 如果标签没有嵌套内容(在

开 始 标 签 和 结 束 标 签 之 内 的 内 容 ) , 那 么 可 以 只 使 用 开 始 标 签 。 例 如 <#if

something>…</#if> ,但是 FreeMarker 知道<#include something> 中

include 指令没有可嵌套的内容。

parameters 的格式由 directivename 来决定。

事实上,指令有两种类型:预定义指令和用户自定义指令。对于用户自定义的指令使用

@来代替#,比如<@mydirective parameters>…</@mydirective>。更深

的区别在于如果指令没有嵌套内容,那么必须这么使用 <@mydirective

parameters />,这和 XML 语法很相似(例如<img … />).但是用户自定义指令

是后面要讨论的高级主题。

像 HTML 标签一样,FTL 标签必须正确的嵌套使用。下面这段示例代码就是错的,因为

if 指令在 list 指令嵌套内容的内外都有:

 
 

<ul>

<#list animals as being>

<li>${being.name} for ${being.price} Euros

<#if user == “Big Joe”>

(except for you)

</#list> <#– WRONG! The “if” has to be closed first. –>

</#if>

</ul>

 
 

注意一下 FreeMarker 仅仅关心 FTL 标签的嵌套而不关心 HTML 标签的嵌套,它只会把

HTML 看做是相同的文本,不会来解释 HTML。

如果你尝试使用一个不存在的指令(比如你输错了指令的名称),FreeMarker 就会拒绝

执行模板,同时抛出错误信息。

FreeMarker 会忽略 FTL 标签中的多余空白标记,所以你也可以这么来写代码:

<#list[BR]

animals as [BR]

being[BR]

>[BR]

${being.name} for ${being.price} Euros [BR]

</#list >

 
 

当然,也不能在<,</和指令名中间插入空白标记。

指令列表和详细介绍可以参考指令参考部分(但是我建议先看表达式章节)。

注意:

通过配置, FreeMarker 可以在 FTL 标签和 FTL 注释中,使用[和]来代替<和>,就像 [#if

user == “Big Joe”]…[/#if]。

注意:

通过配置,FreeMarker 可以不需要#来理解预定义指令(比如<if user == “Big

Joe”>…</if>)。而我们不建议这样来使用。

 
 

声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 嗅谱网
转载请注明:转自《FreeMarker指令标签
本文地址:http://www.xiupu.net/archives-4683.html
关注公众号:嗅谱网

赞赏

wechat pay微信赞赏alipay pay支付宝赞赏

上一篇
下一篇

相关文章

在线留言

你必须 登录后 才能留言!