freemarker中文手册(3)

2019-09-01 13:28

We have these animals:[BR] [BR] <#list <#-- some comment... --> animals as <#-- again... --> being>[BR] ... ? 多余的空白字符会在模板输出时移除 (2)指令

? 在FreeMarker中,使用FTL标记引用指令 ? 有三种FTL标记,这和HTML标记是类似的:

? 开始标记:<#directivename parameters>

? 结束标记:

? 空内容指令标记:<#directivename parameters/> ? 有两种类型的指令:

? FTL标记不能够交叉,而应该正确的嵌套,如下面的代码是错误的:预定义指令

和用户定义指令 ? 用户定义指令要使用@替换#,如<@mydirective>...(会在后面

讲述)

<#list animals as being> ${being.name} for ${being.price} Euros <#if use = \ (except for you) <#-- WRONG! --> ? 如果使用不存在的指令,FreeMarker不会使用模板输出,而是产生一个错误消息 ? FreeMarker会忽略FTL标记中的空白字符,如下面的例子:

<#list[BR] animals as[BR] being[BR] >[BR] ${being.name} for ${being.price} Euros[BR] ? 但是,<、

? 直接指定值

? 字符串

? 使用单引号或双引号限定

? 如果包含特殊字符需要转义,如下面的例子:

${\\\\quoted\\\ and this is a backslash: \\\\\ ${'It\\'s \this is a backslash: \\\\'} 输出结果是: It's \quoted\ and this is a backslash: \\ It's \this is a backslash: \\ ? 下面是支持的转义序列: 转义序列 含义 \\\ \\' \\\\ \\n \\r \\t \\b \\f \\l \\g \\a \\{ \\xCode

双引号(u0022) 单引号(u0027) 反斜杠(u005C) 换行(u000A) Return (u000D) Tab (u0009) Backspace (u0008) Form feed (u000C) < > & {

4位16进制Unicode代码

? 有一类特殊的字符串称为raw字符串,被认为是纯文本,其中的\\和{等

不具有特殊含义,该类字符串在引号前面加r,下面是一个例子:

${r\${r\输出的结果是: ${foo} C:\\foo\\bar ? 数字 ? 直接输入,不需要引号

? 精度数字使用“.”分隔,不能使用分组符号

? 目前版本不支持科学计数法,所以“1E3”是错误的 ? 不能省略小数点前面的0,所以“.5”是错误的 ? 数字8、+8、08和8.00都是相同的 ? 布尔值

? true和false,不使用引号 ? 序列

? 由逗号分隔的子变量列表,由方括号限定,下面是一个例子:

<#list [\ as x> ${x} 输出的结果是: winter spring summer autumn ? 列表的项目是表达式,所以可以有下面的例子: [2 + 2, [1, 2, 3, 4], \? 可以使用数字范围定义数字序列,例如2..5等同于[2, 3, 4, 5],但是更有效率,注意数字范围没有方括号 ? 可以定义反递增的数字范围,如5..2 ? 散列(hash)

? 由逗号分隔的键/值列表,由大括号限定,键和值之间用冒号分隔,下

面是一个例子:

{\? 键和值都是表达式,但是键必须是字符串 ? 获取变量

? 顶层变量: ${variable},变量名只能是字母、数字、下划线、$、@和#的

组合,且不能以数字开头 ? 从散列中获取数据

? 可以使用点语法或方括号语法,假设有下面的数据模型:

(root) | +- book | | | +- title = \ | | | +- author | | | +- name = \ | | | +- info = \ | +- test = \下面都是等价的: book.author.name book[\book.author.[\book[\? 使用点语法,变量名字有顶层变量一样的限制,但方括号语法没有该限制,因为名字是任意表达式的结果 ? 从序列获得数据:和散列的方括号语法语法一样,只是方括号中的表达式值必须是数字;注意:第一个项目的索引是0

? 序列片断:使用[startIndex..endIndex]语法,从序列中获得序列片断(也

是序列);startIndex和endIndex是结果为数字的表达式 ? 特殊变量:FreeMarker内定义变量,使用.variablename语法访问

? 字符串操作

? Interpolation(或连接操作)

? 可以使用${..}(或#{..})在文本部分插入表达式的值,例如:

${\${\? 可以使用+操作符获得同样的结果 ${\${user + user + user + user} ? ${..}只能用于文本部分,下面的代码是错误的:

<#if ${isBig}>Wow! <#if \应该写成:

<#if isBig>Wow! ? 子串

? 例子(假设user的值为“Big Joe”):

${user[0]}${user[4]} ${user[1..4]} 结果是(注意第一个字符的索引是0):

BJ ig J ? 序列操作

? 连接操作:和字符串一样,使用+,下面是一个例子:

<#list [\- ${user} 输出结果是:

- Joe - Fred - Julia - Kate ? 散列操作 ? 连接操作:和字符串一样,使用+,如果具有相同的key,右边的值替代左边的值,例如:

<#assign ages = {\, \\, \- Joe is ${ages.Joe} - Fred is ${ages.Fred} - Julia is ${ages.Julia} 输出结果是:

- Joe is 30 - Fred is 25 - Julia is 18 ? 算术运算


freemarker中文手册(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:湖北蓝田股份有限公司财务报表分析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: