4. loop 5. local 6. plain 7. loop 8. loop 9. plain2 ? 内部循环变量隐藏同名的外部循环变量,如: <#list [\ ${x} <#list [\ ${x} <#list [\ ${x} #list> ${x} #list> ${x} #list> 输出结果:
loop 1 loop 2 loop 3 loop 2 loop 1 ? 模板中的变量会隐藏(而不是覆盖)数据模型中同名变量,如果需要访问数据模型中的同名变量,使用特殊变量global,下面的例子假设数据模型中的user的值是Big Joe:
<#assign user = \${user} <#-- prints: Joe Hider --> ${.globals.user} <#-- prints: Big Joe --> (3)名字空间
? 通常情况,只使用一个名字空间,称为主名字空间
? 为了创建可重用的宏、变换器或其它变量的集合(通常称库),必须使用多名字
空间,其目的是防止同名冲突 ? 创建库
? 下面是一个创建库的例子(假设保存在lib/my_test.ftl中):
<#macro copyright date>
Copyright (C) ${date} Julia Smith. All rights reserved.
Email: ${mail}
<#import \<#assign mail=\<@my.copyright date=\${my.mail} ${mail} 输出结果:
Copyright (C) 1999-2002 Julia Smith. All rights reserved.
Email: jsmith@acme.com
<#import \${my.mail} <#assign mail=\in my> ${my.mail} ? 输出结果: jsmith@acme.com jsmith@other.com ? 数据模型中的变量任何地方都可见,也包括不同的名字空间,下面是修改的库: <#macro copyright date>
Copyright (C) ${date} ${user}. All rights reserved.
#macro> <#assign mail = %user}@acme.com\? 假设数据模型中的user变量的值是Fred,则下面的代码: <#import \<@my.copyright date=\${my.mail} ? 输出结果:Copyright (C) 1999-2002 Fred. All rights reserved.
Fred@acme.com Freemarker - 几个比较实用的例子 - - 用Freemarker做模本语言有一段时间了,列出几个和JSP或者Velocity相比起来比较方便的用途,目的是引诱更多的人跳上Freemarker这个贼船,
1. String内置的JavaScript转换: js_string
用途:用于JavaScript转义,转换',\换行等特殊字符 模板:
输出:
2.内置的默认值处理:default 用途: 用于处理默认值 模本:
User: ${userLogin.name?default(\