2009年4月15日星期三

FreeMarker中文手册--KLW 总体结构


总体结构

模版实际上是你用FTL(FreeMarker 模版语言)编写的程序.这是一个简单的编程语言,仅被设计用来实现模版的,而不是其他复杂的东西.

一个模版(FTL程序)由以下几部分构成:
  • 文本: 文本会被原样输出.
  • 内插值:这部分在输出的时候会被实际计算的值代替.内差值由${和}包围(或者#{和}).
  • FTL 标签:FTL标签和HTML标签类似,但他们实际上FreeMarker的指令,不会被打印到输出中.
  • 注释:这里的注视也和HTML中的注视类似,但是他们是使用 <#-- 和 -->包围的.FreeMarker会忽略注视,不会被写到输出中.
让我们看一个具体的模版,[BR]被加进入,用来表示换行.
<html>[BR]
<head>[BR]
<title>Welcome!</title>[BR]
</head>[BR]
<body>[BR]
<#-- Greet the user with his/her name -->[BR]
<h1>Welcome ${user}!</h1>[BR]
<p>We have these animals:[BR]
<ul>[BR]
<#list animals as being>[BR]
<li>${being.name} for ${being.price} Euros[BR]
</#list>[BR]
</ul>[BR]
</body>[BR]
</html>
FTL区分字母大小写.所以list是一个正确的指令,而List不是.同样的,{name}不同于{Name}或者{NAME}.

注意在内插值仅可以直接使用在文本中,以及字符串表达式中.

一个FTL标签不能内嵌在另一个FTL标签中,或者使用在内差值当中.例如,下面的表达是错误的: <#if <#include 'foo'>='bar'>...</#if>

注释可以放在FTL标签和内差值内部.例如:
<h1>Welcome ${user <#-- The name of user -->}!</h1>[BR]
<p>We have these animals:[BR]
<ul>[BR]
<#list <#-- some comment... --> animals as <#-- again... --> being>[BR]
...
注意

你们如果尝试过上述例子,你也许注意到,一些空格,制表符和换行符,在输出的时候会丢失,尽管我们说文本会被原样输出.现在先别为这个操心,这是因为” white-space stripping”(空白-剥离)特性被设置的缘故,这个特性会自动移除多余的空格,制表符和换行符.

没有评论: