FreeMarker基础入门知识1 -指令

1:指令

            
           

使用 FTL标签来调用 指令。 在示例中已经调用了 list 指令。在语法上我们使用了两个标签: <#list animals as animal> 和</#list>

FTL 标签分为两种:

  • 开始标签: <#directivename parameters>

  • 结束标签: </#directivename>

除了标签以 # 开头外,其他都和HTML,XML的语法很相似。 如果标签没有嵌套内容(在开始标签和结束标签之间的内容),那么可以只使用开始标签。 例如 <#if something>...</#if>, 而FreeMarker知道 <#include something> 中的 include 指令没有可嵌套的内容。

parameters 的格式由 directivename来决定。

事实上,指令有两种类型: 预定义指令 和 用户自定义指令。 对于用户自定义的指令使用 @ 来代替 #,比如,<@mydirectiveparameters>...</@mydirective>。 更深的区别在于如果指令没有嵌套内容,那么必须这么使用 <@mydirective parameters />,这和XML语法很相似 (例如 <img ... />)。 但用户自定义指令是更高级的话题,将会在 后续章节 中继续讨论。

像HTML标签一样,FTL标签也必须正确地嵌套使用。下面这段示例代码就是错的, 因为 if 指令在 list 指令嵌套内容的内外都有:

<ul>
<#list animals as animal>
  <li>${animal.name} for ${animal.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]
     animal[BR]
>[BR]
${animal.name} for ${animal.price} Euros[BR]
</#list    >

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

所有指令的详细介绍可以在 模板语言参考 /指令参考 中找到(但是建议您先看表达式章节)。

Note:

通过配置,FreeMarker 可以在FTL标签和FTL注释中, 使用 [ 和 ] 来代替 < 和 >,就像 [#if user == "Big Joe"]...[/#if]。 要获取更多信息,请参考:其它/替换(方括号)语法

Note:

通过配置,FreeMarker 可以不需要 # 来理解预定义指令(比如 <if user == "Big Joe">...</if>)。 而我们不建议这样来使用。要获取更多信息,请参考:模板语言参考 /废弃的 FTL 结构/老式 FTL 语法



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值